Foros del Web » Programando para Internet » PHP »

guardar desde php un txt y visualizarlo con saltos de linea

Estas en el tema de guardar desde php un txt y visualizarlo con saltos de linea en el foro de PHP en Foros del Web. Que tal foreros, primero que nada y antes que todo una disculpa si este post ya esta muy trillado, pero les prometo que ya busque ...
  #1 (permalink)  
Antiguo 30/05/2012, 18:03
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
guardar desde php un txt y visualizarlo con saltos de linea

Que tal foreros, primero que nada y antes que todo una disculpa si este post ya esta muy trillado, pero les prometo que ya busque en el foro y probe y probe y nomas nada, no dislumbro como solucionar mi problema

veran tengo el archivo editar.php:

Código HTML:
<?php
date_default_timezone_set("America/Mexico_City");
$rumores = "rumores_marquesina.txt";
/*---------------------------------*/
$fp_rms = fopen($rumores,"r"); 
$contenido_rms= fread ($fp_rms, filesize ($rumores));
fclose($fp_rms);
?>
<table align="center" border="1" id="tablas">
	<caption>Editar Marquesina Rumores</caption>
	<tr>
    	<th>Escriba la nueva informaci&oacute;n:</th>
        <td><textarea class="textarea" id="rms" name="rms"><?php echo htmlentities($contenido_rms); nl2br($contenido_rms); ?></textarea></td>
    </tr>
    <tr>    
        <td colspan="7" align="center"><input type='button' value='Guardar' onclick="edit_rms()"></td>
	</tr>
</table> 
el procesar.php:

Código HTML:
<?php
$fichero = "rumores_marquesina.txt";

	$texto = utf8_decode($_GET["rumores"]);
	if($fp = fopen($fichero,"w+")){
		fwrite($fp,stripslashes($texto));
		echo 'Archivo modificado';
	}
	fclose($fp);
	echo "<div class='succes'>Operaci&oacute;n Exitosa</div>";
//}
?> 
Bueno pues cuando introduzco el texto en el textarea yo pongo una linea y doy enter, otra linea y doy enter, osea normal

pero cuando lo visualizo despues de que le di guardar me aparece todo de corrido, probe guardando algo asi

parrafo 1 "\n"
parrafo 2 <br />

pero no funcionan las toma como texto plano

les agradecere mucho su guia en este asunto
  #2 (permalink)  
Antiguo 30/05/2012, 18:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Hola, paisano. No prometas, que es a futuro, jura.

Debes comprender cómo funcionan los saltos de línea en diferentes ámbitos. En un bloc de notas o en un textarea, el salto de linea se compone por el enter \r\n (retorno de carro y linea nueva) mientras que para el html el salto de linea se da por una etiqueta <br/>

Te recomiendo guardar el textarea tal cual, y cuando vayas a mostrar el texto sustituye los saltos por etiquetas, con str_replace("\r\n","<br/>");

Por cierto, n2lbr() lo que hace es que por cada \n te agrega (no sustituye) un <br/>
  #3 (permalink)  
Antiguo 30/05/2012, 18:27
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Entonces si es al mostrar le cambie en editar.php asi:

Código HTML:
<?php
date_default_timezone_set("America/Mexico_City");
$rumores = "rumores_marquesina.txt";
/*---------------------------------*/
$fp_rms = fopen($rumores,"r"); 
$contenido_rms= fread ($fp_rms, filesize ($rumores));
$contenido_rms = str_replace("\r\n", "<br/>", $contenido_rms); //agregue aqui el reemplazo
fclose($fp_rms);
?>
<table align="center" border="1" id="tablas">
	<caption>Editar Marquesina Rumores</caption>
	<tr>
    	<th>Escriba la nueva informaci&oacute;n:</th>
        <td><textarea class="textarea" id="rms" name="rms"><?php echo htmlentities($contenido_rms); ?></textarea></td>
    </tr>
    <tr>    
        <td colspan="7" align="center"><input type='button' value='Guardar' onclick="edit_rms()"></td>
	</tr>
</table> 
pero lo sigo visualizando igual en la edicion

tambien lo cambie ya en la visualizacion de la pagina (la muestro en una marquesina) tambien lo puse y no pone los saltos

Código HTML:
<?php
					$rumores = file_get_contents("administracion/portada/rumores_marquesina.txt");
					$rumores = ucfirst($rumores);
					$rumores = htmlentities($rumores);
					$rumores = nl2br($rumores);
					$rumores = str_replace("\r\n", "<br/>", $rumores);
				?>
                <div class="rigth_rms"><marquee direction="up" scrolldelay="100" scrollamount="3" onmouseout="this.start()" onmouseover="this.stop()"><?php echo $rumores; ?></marquee></div> 
  #4 (permalink)  
Antiguo 31/05/2012, 14:58
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Por cierto, gracias por tu respuesta ocp001a

Bueno sigo sin conseguirlo y es que no estoy segura de entender ni seguir la logica del asunto:

Al introducir el texto desde el textarea -> los enters que doy, registran un \n invisible no? ok
Al guardar desde php (desde el textarea) al block de notas -> lo debería guardar tal cual y debería guardar los \n invisibles no?, lo que hago asi

Código PHP:
//guardar
$fichero "rumores_marquesina.txt";
    
$texto utf8_decode($_GET["rumores"]); //paso el utf8 para acentos y otras cosas
    
if($fp fopen($fichero,"w+")){
        
fwrite($fp,$texto);
        echo 
'Archivo modificado';
    }
    
fclose($fp);
    echo 
"<div class='succes'>Operaci&oacute;n Exitosa</div>";
?> 
Al visualizar el contenido del block de texto en el textarea (esto es para editarlo) -> debería reemplazar los \n ??? lo hago así:

Código PHP:
<?php
//editar
$rumores "rumores_marquesina.txt";

$fp_rms fopen($rumores,"r"); 
$contenido_rmsfread ($fp_rmsfilesize ($rumores));
fclose($fp_rms);
$contenido_rms=htmlentities($contenido_rms); //si no le pongo esto no se visualizan los acentos correctamente
?>
<table align="center" border="1" id="tablas">
    <caption>Editar Marquesina Rumores</caption>
    <tr>
        <th>Escriba la nueva informaci&oacute;n:</th>
        <td><textarea class="textarea" id="rms" name="rms"><?php echo $contenido_rms?></textarea></td>
    </tr>
    <tr>    
        <td colspan="7" align="center"><input type='button' value='Guardar' onclick="edit_rms()"></td>
    </tr>
</table>
Esto me muestra el texto de corrido, no veo saltos de linea

------------------------------------------------

Y lo mas importante

Al visualizar el contenido del block en mi pagina (que se muestra en una marquesina) lo que hago es lo siguiente:

Código PHP:
<?php
    $rumores 
file_get_contents("administracion/portada/rumores_marquesina.txt");
    
$rumores ucfirst($rumores);
    
$rumores htmlentities($rumores);
    
$rumores str_replace(array("\r\n""\r""\n"), "<br />",$rumores); //aca convierto los saltos en etiquetas br
    
$rumores nl2br($rumores);
?>
<div class="rigth_rms"><marquee direction="up" scrolldelay="100" scrollamount="3" onmouseout="this.start()" onmouseover="this.stop()"><?php echo $rumores?></marquee></div>
Y esto me muestra también todo el texto de corrido

la verdad ya me hice bolas

Última edición por catpaw; 31/05/2012 a las 15:07
  #5 (permalink)  
Antiguo 31/05/2012, 15:09
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Lo que haces debería estar bien

Ahora, lo que no recuerdo, es si la marquesina permite saltos de linea.

Verifica el html generado por php para ver si tienes los <br/>, si los tienes, es que la marquesina los ignora.
  #6 (permalink)  
Antiguo 31/05/2012, 15:17
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

como indicaron la forma \r\n es el salto de linea en el texto comun mientras que el <br> lo es en html, si quieres utilizar coloca el texto que tiene los saltos de linea \r\n dentro de las etiquetas <pre></pre>
ejempllo:
Código HTML:
Ver original
  1. <pre>
  2. linea1 \r\n linea2 \r\n linea3 \r\n
  3. </pre>
obviamente en un block de notas no veras el \r\n como tampoco los ves en text area pero de esta forma si funcioara espero te sirva saludos.
  #7 (permalink)  
Antiguo 31/05/2012, 15:35
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

gracias por sus respuestas

lo curioso es que si edito directamente el block de notas si me aparecen los saltos de linea tanto en la marquesina como en la edición, lo cual demuestra que si toma saltos de linea la marquesina

Pero una vez que desde la edición guardo cambios al block ya no me toma los saltos de linea

NSD voy a probar y les cuento

Edito:

Ya probe y me guarda las etiquetas <pre> y las \r\n como texto plano puse algo así

<pre>la linea 1 \r\n **** \r\n la linea 2</pre>
  #8 (permalink)  
Antiguo 31/05/2012, 16:00
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

No estoy seguro de si sigues con el problema.

Poniendo las cosas en claro:

Cuando crees el textarea por los datos tal cual los lees del archivo.

Cuando escribas el archivo coloca los datos tal cual los obtienes del formulario.

Cuando quieras mostrar los datos en la marquesina, sustituye los saltos de linea por <br/>, ya sea con str_replace o bien con nb2lr.

Nota: <pre> es una etiqueta html que sirve para mostrar un texto sin formato, tal cual lo haría un bloc de notas en el navegador, por lo que si quieres que tenga estilo de la marquesina no creo que te convenga usarlo.
  #9 (permalink)  
Antiguo 31/05/2012, 16:12
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Si el problema persiste, de la forma como lo hago es así:

muestro el contenido del block en el text area, lo modifico normal introduciendo el texto y dando enters todo normal, lo guardo

lo visualizo en la marquesina y no veo los saltos

lo abro para editarlo y en el textarea tampoco se ven los saltos

el código completo esta en mi antepenultimo comentario
  #10 (permalink)  
Antiguo 31/05/2012, 17:03
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: guardar desde php un txt y visualizarlo con saltos de linea

Gran avance!!

ya me toma en cuenta los saltos la marquesina, el unico codigo para visulizarla es

Código PHP:
<?php
$rumores 
file_get_contents("administracion/portada/rumores_marquesina.txt");
?>
<div class="rigth_rms"><marquee direction="up" scrolldelay="100" scrollamount="3" onmouseout="this.start()" onmouseover="this.stop()"><?php echo $rumores?></marquee></div>
el guardar lo deje así:

Código PHP:
<?php
$fichero 
"rumores_marquesina.txt";

    
$texto $_GET["rumores"];
    if(
$fp fopen($fichero,"w+")){
        
fwrite($fp,$texto);
        echo 
'Archivo modificado';
    }
    
fclose($fp);
    echo 
"<div class='succes'>Operaci&oacute;n Exitosa</div>";
?>
La cuestión estaba en la edición, debía quitar todos las funciones de codificación y bueno poner al final de las lineas <br /> por ejemplo

linea 1 <br />
linea 2 <br />
linea 3 <br />

el código quedo así:

Código PHP:
<?php
date_default_timezone_set
("America/Mexico_City");
$rumores "rumores_marquesina.txt";
/*---------------------------------*/
$fp_rms fopen($rumores,"r"); 
$contenido_rmsfread ($fp_rmsfilesize ($rumores));
fclose($fp_rms);
?>
<table align="center" border="1" id="tablas">
    <caption>Editar Marquesina Rumores</caption>
    <tr>
        <th>Escriba la nueva informaci&oacute;n:</th>
        <td><textarea class="textarea" id="rms" name="rms"><?php echo $contenido_rms?></textarea></td>
    </tr>
    <tr>    
        <td colspan="7" align="center"><input type='button' value='Guardar' onclick="edit_rms()"></td>
    </tr>
</table>
Ahora mi inconveniente es que al editar me muestra el texto asi

linea 1 <br /> linea 2 <br /> linea 3 <br />

me gustaria me mostrase:

linea 1
linea 2
linea 3

y para eso agregue:

$contenido_rms = str_replace("<br />","\r\n",$contenido_rms);

que lo soluciona muy bien, pero al guardar ya no me vuelve a respetar saltos

entonces pense que al guardar deberia revertir y puse eso:

$contenido_rms = str_replace("\r\n","<br />",$contenido_rms);

pero no funciono

y es que me preocupa por que el usuario final cuando quiera editar el texto no se va a acordar en poner un <br /> cuando quiera un salto, por lo que a el concierne un simple enter basta

Última edición por catpaw; 31/05/2012 a las 17:11

Etiquetas: html, saltos, tabla, 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 06:52.