Conservar saltos de linea al leer de un textarea

David
26 de Enero del 2005
Hola amigos, mi problema es que al leer de un textarea, no conserva los saltos de linea, ni la negrita, ni nada de estilo (pero me conformo con que conserve los saltos de linea)
pongamos por ejemplo que leo:
"Hola bla bla bla.
estoy aqui bla bla bla"
Se almacena en el textArea y por lo tanto en la base de datos al hacer el insert el siguiente texto:
Hola bla bla bla.estoy aqui bla bla bla";
Mi pregunta es:¿ COMO SE CONSERVA LOS CARACTERES ESPECIALES (ESPACIOS EN BLANCO, etc...), existe alguna funcion php o javascript que me ayude en este problemilla?, gracias de antemano.

WebMaster
26 de Enero del 2005
Hola, mira cuando vayas a mostrar los datos ya guardados en la base de datos utiliza la funcion nl2br() del PHP antes de imprimirlos en el navegador, esto quedaria algo asi como:

<?
//Aqui hay codigo

$contenido = nl2br( $rs[campo] );
echo $contenido;

//Aqui hay mas codigo...
?>

Con esto, reemplazaras todas las apariciones de salto de linea (n) por el equivalente al HTML que es <BR>...

Ahora que si lo deseas, tambien puedes hacer este reemplazo de saltos de linea al momento que recibes los datos del formulario, y luego lo guardas en la base de datos, y quedaria, en terminos generales, algo como:

<?
//Aqui hay codigo

//Suponiendo que tu campo en el formulario
//se llama contenido

$contenido = nl2br( $contenido );

$SQL="INSERT INTO Tabla (campo1,contenido,campox) VALUES ('$campo1','$contenido','$campox');";
mysql_query($SQL);

//Aqui hay mas codigo...
?>

y con eso, se almacena en la base de datos ya con el salto de linea convertido a su equivalente HTML... aunque si tu aplicacion que estas programando tendra la opcion de editar el contenido (como foro, libro de visitas, etc) pues mejor te recomiendo que uses la primer forma que te mencione, asi conservaras los datos en la BD tal como fueron tecleados, y solo lo cambias cuando los vas a mostrar al usuario...

Para conservar los espacios en blanco, podrias usar str_replace(" ","&nbsp",$contenido) pero esto te puede dar lata si dentro de contenido van incluidos tag HTML... asi que en ese caso, mi consejo es que mejor uses el codigo &nbsp; directamente donde quieras que se muestra mas de un espacio y si la estrucutra es mas compleja pues usar tablas o el tag tag <PRE> </PRE>, dependiendo de tus necesidades...

Suerte y hasta pronto...

WebMaster
http://www.soloprogramacion.net/foro.php

Bodyfire
26 de Enero del 2005
Hola, saludos.
Solo queria escribir para agradecer este comentario sobre coservar los saltos de línea. Yo tenias meses buscando algo parecido hasta que afortuandamente di con este foro.

Muchisimas gracias por hacer esta aclaracion.

krusher
26 de Enero del 2005
Da gusto encontrar cosas asi de simples y tan funcionales, y mas cuando lo llevas intentando un monton de tiempo. Don't Stop ppl!