Foros del Web » Programando para Internet » PHP »

Barra vertical "|" justo antes del salto de línea en archivo txt

Estas en el tema de Barra vertical "|" justo antes del salto de línea en archivo txt en el foro de PHP en Foros del Web. Hola... Por favor, necesito insertar en archivo.txt una barra vertical "|" justo antes de cada salto de linea y no me sale. Intento hacer esto: ...
  #1 (permalink)  
Antiguo 07/09/2017, 18:05
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Barra vertical "|" justo antes del salto de línea en archivo txt

Hola...

Por favor, necesito insertar en archivo.txt una barra vertical "|" justo antes de cada salto de linea y no me sale.

Intento hacer esto: abro el archivo.txt dentro de un textarea del formulario y le agrego la barra vertical "|" con "str_replace()" y lo muestro en pantalla... hasta ahí todo bien, pero cuando le doy al boton "Update" para que rescriba el archivo... me agrega al final dos barras verticales "||" y no se como hacer para que quede solo una.

Tal vez el str_replace() no este bien hecho o no se pueda hacer así...!

Código PHP:
$file archivo.txt;

if(isset(
$_POST['update'])){ 
$newtext $_POST['update'];
$open fopen("$file","w+"); //abro el fichero en modo lectura/escritura
fwrite($open$newtext);//escribo el contenido en el fichero
fclose($open);//cierras el fichero
}

echo 
"<form action='".$_SERVER['PHP_SELF'] ."' method='post'>"
echo 
"<textarea name='update'>"
$open fopen("$file","r"); //abro el fichero en modo lectura
while(!feof($open))
{
$text fgets($open); //recupero el contenido del fichero
$texto str_replace"\r\n""|\r\n"$text );
echo 
$texto;
}
echo 
"</textarea><br>";
echo 
"<input name='submit' type='submit' value='Update' /></form>"
Tendría que quedarme así:

Esto es una linea de texto|
Esto es otra linea de texto|
Y así el resto de las lineas|
  #2 (permalink)  
Antiguo 07/09/2017, 18:28
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Y si lo agregas en el php??

Código PHP:
Ver original
  1. fwrite($open, $newtext."|");//escribo el contenido en el fichero

y eliminas esta:

Código PHP:
Ver original
  1. $texto = str_replace( "\r\n", "|\r\n", $text );
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 07/09/2017, 19:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Hola petit89...

No, de esa manera tampoco funciona... la variable $newtext va con el formlario, además, haciéndolo como decis... ¿en que lugar coloca la barra vertical?
  #4 (permalink)  
Antiguo 07/09/2017, 19:27
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Te dejo un ejemplo:


recuerda que el \r\n no te lo va interpretar el navegador, tienes que sustituir eso por <br/> en este ejemplo no hay salto de linea dado que no viene un verdadera \r\n, estoy trabajandolo con una cadena simple "hola!" tambien puedes ocupar nl2br() de php para hacerlo automaticamente..
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 07/09/2017, 19:41
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Entiendo... pero el asunto es que debo volver a escrir el archivo.txt con la barra vertical en cada linea y justo antes de cada salto de linea. El salto de linea <br /> no me sirve... la salida y el cambio son el archivo txt!!!
  #6 (permalink)  
Antiguo 07/09/2017, 19:43
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Edito, ve que tal esto:

Código PHP:
Ver original
  1. <?php
  2. $file = "test.txt";
  3.  
  4. if(isset($_POST["new"])){
  5. $txt = trim($_POST["new"]);
  6. $lines = explode("\r\n", $txt);
  7. $ntxt = "";
  8.  
  9.     for($k=0;$k<sizeof($lines);$k++){
  10.     $line = $lines[$k];
  11.         while($line[strlen($line)-1] == "|"){
  12.         $line = substr($line,0,-1);
  13.         }
  14.     $ntxt .= $line."|\r\n";
  15.     }
  16. $ntxt = trim($ntxt);
  17. $fo = fopen($file,"w+");
  18. fwrite($fo, $ntxt);
  19. fclose($fo);
  20. }
  21. $cont = file_get_contents($file);
  22. ?>
  23. <form method="post">
  24. <textarea name="new" style="width:400px; height:250px;"><?php echo $cont; ?></textarea><br/><input type="submit" value="update" />
  25. </form>

No se si en la linea final quieres un "|", de no querer cambia

$ntxt = trim($ntxt);
por
$ntxt = substr(trim($ntxt),0,-1);

Tampoco se si en las filas vacias quieres o no "|", de no ser asi, despues del for
if($line == ""){ $ntxt .= "\r\n"; continue; }

Saludos

Última edición por alvaro_trewhela; 07/09/2017 a las 21:28
  #7 (permalink)  
Antiguo 08/09/2017, 06:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Hola alvaro_trewhela... gracias por ayudarme!!!

Si, tu codigo va perfecto para insertar la barra vertical "|" justo antes del salto de línea... pero me está dando un dolor de cabeza grande, ya que en la línea, además, debe reemplazar cada tabulación con una "|".

Esto, en mi código, lo hacía con:

Código PHP:
$texto str_replace " \t" "|" $text ); 
No lo he aclarado antes para no liar la pregunta, pero con este código tuyo no se como hacer ese reemplazo.

Nuevamente gracias y seguiré investigando para ver como resolverlo!!!
  #8 (permalink)  
Antiguo 08/09/2017, 12:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Tienes un espacio antes de \t, será por eso que no funciona?

Además, puedes usar arrays para hacer varios reemplazos a la vez:

Código PHP:
Ver original
  1. // Primero lo que vas a buscar:
  2. $buscar = ["\r\n", "\t"];
  3.  
  4. // Luego los reemplazos, en el mismo orden:
  5. $reemplazar = ["|\r\n", '|'];
  6.  
  7. // Aplicas el cambio:
  8. $texto = str_replace($buscar, $reemplazar, $texto);

También insisto en la ventaja de usar file_get_contents() para leer el archivo en un solo paso.
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 08/09/2017, 14:33
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Hola triby... gracias por ayudarme nuevamente!!!

He probado como dices, pero lo mismo, me escribe al final de cada línea dos barras verticales "||", y no se por qué. El reemplazo de las tabulaciones por la barra "|" lo hace bien, pero la que debe poner justo antes del salto de linea, la pone doble!!!

Código PHP:
if(isset($_POST["submit"]) && $_POST['submit'] && isset($_POST['update'])){ 
$newtext $_POST['update'];

$open fopen("$file","w+"); //abres el fichero en modo lectura/escritura
fwrite($open$newtext);//escribes el contenido en el fichero

fclose($open);//cierras el fichero
}

echo 
"<form action='".$_SERVER['PHP_SELF'] ."' method='post'>"
echo 
"<textarea name='update' style='width:100%;height:500px;'>"

// Carga todo el archivo en una variable:
$texto file_get_contents("$file");

// Primero lo que vas a buscar:
$buscar = ["\r\n""\t"];

// Luego los reemplazos, en el mismo orden:
$reemplazar = ["|\r\n"'|'];

// Aplicas el cambio:
$texto str_replace($buscar$reemplazar$texto);

echo 
$texto;

echo 
"</textarea><br>";
echo 
"<input type=\"hidden\" name=\"f\" value=\"$file\">";  
echo 
"<input style=\"font-size:20px;\" name='submit' type='submit' value='Update' /></form>"
  #10 (permalink)  
Antiguo 08/09/2017, 15:03
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

No será que ya tienes una barra invertida en el archivo?, intenta esto antes de ese reemplazo:

Código PHP:
Ver original
  1. // Eliminar barra en saltos existentes:
  2. $texto = str_replace("|\r\n", "\r\n", $texto);
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 08/09/2017, 15:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Siii Triby... funcionó!!!

Pero como es posible si el archivo.txt al abrirlo no tiene esa barra... no se.

Por cierto, en la última linea, al no tener salto de linea, no coloca la barra... ¿por favor, me puedes orientar en como hacerlo o dónde buscar?

Gracias Triby por las enseñanzas... realmente agradezco tu tiempo y paciencia para conmigo!!!
  #12 (permalink)  
Antiguo 08/09/2017, 15:55
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Para la barra final solo concatenala al final si ya la tiene valida asi

Si texto[largo-1]!="|"
$texto."|"


Disculpa no estoy en mi pc estoy en mi cel por eso lo pobre de mi explicacion
  #13 (permalink)  
Antiguo 08/09/2017, 15:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Para agregar la barra vertical "|" en la última línea lo hice así:

Código PHP:
/*
Coloca "|" al final de la última línea y borra
espacios y líneas vacías siguientes
*/
$texto trim($texto."|"); 
Funciona pero no se si es lo correcto, es decir, si hay otra forma más adecuada.

Saludos!
  #14 (permalink)  
Antiguo 08/09/2017, 18:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Si funciona... supongo que es correcto!

En cuanto a las barras duplicadas, si no están ya en el archivo, entonces las estás aplicando en otra parte de tu código, porque no aparecen solas.
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 08/09/2017, 19:03
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Barra verticla "|" justo antes del salto de linea en archivo txt

Si, tienes razón... no cabe dudas de que el error lo estoy cometiendo yo en el código!!!

Nuevamente muchas gracias triby, y también agradezco a alvaro_trewhela.

Saludos!

Etiquetas: barra, formulario, salto, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:01.