Saltos de linea textarea // Ajax y PHP

Iniciado por Mr. Crowley, 27 Enero 2010, 03:38 AM

0 Miembros y 1 Visitante están viendo este tema.

Mr. Crowley

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:


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:

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):

$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
Mi blog personal: www.calirojas.com