Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Mr. Crowley en 27 Enero 2010, 03:38 am



Título: Saltos de linea textarea // Ajax y PHP
Publicado por: Mr. Crowley en 27 Enero 2010, 03:38 am
Hola! Esto en realidad no es una duda, mas bien, es una respuesta a todas aquellas personas que tienen el mismo problema que yo tuve hace unos dias.

Aveces queremos almacenar el contenido de un textarea tal y como el usuario lo ha dejado. Ejemplo:

Código:
Hola
esta
es una
prueba

Si estamos usando javascript para pasar las variables al documento de PHP, nos vamos a encontrar con el detalle de que se eliminan los saltos de linea (porque? realmente no se).

Despues de darle vueltas al asunto y probar con PHP funciones como nl2br y otras, me di cuenta de que el problema era la funcion javascript; los datos llegaban bien, pero los pasaba sin los saltos de linea.

La solucion es escapar los caracteres... el salto de linea es %0A en javascript, entonces... deduje que:

Código:
variable = escape(document.getElementById('TextArea').value);
variable = variable.replace(/%0A/g, "<br>");

Con eso reemplazamos los saltos de linea (%0A) por <br> (el salto de linea en HTML).

Bien... PHP recibira esa variable perfectamente... con los saltos de linea. Pero para recuperar el valor de la base de datos y ponerlo de nuevo en un textarea es necesario hacer otro replace (con PHP):

Código:
$variable=str_replace("<br>","\\n",$iFila["CampoConSaltosDeLinea"]);

A muchos de ustedes no les parecera la idea de almacenar tags de html en la bd, pero pueden idearse una mejor solucion; esta es una base para los que tenian la duda.

Saludos