texto saltos salto mostrar linea guardar formato datos con php html textarea line-breaks

php - saltos - Capturar caracteres linebreaks(línea nueva, salto de línea) en un área de texto



nl2br php (4)

Tengo un formulario con un <textarea> y quiero capturar cualquier salto de línea en ese área de texto en el lado del servidor, y reemplazarlos por un <br/> .

¿Es eso posible?

Intenté configurar white-space:pre en el CSS de la textarea , pero aún no es suficiente.


La función nl2br() existe para hacer exactamente esto:

Sin embargo, esta función agrega etiquetas br pero en realidad no elimina las nuevas líneas; por lo general, esto no es un problema, pero si desea quitarlas por completo y capturar retornos de carro también, debe usar str_replace o preg_replace

Creo que str_replace sería un poco más rápido pero no he comparado;

$val = str_replace( array("/n","/r","/r/n"), ''<br />'', $val );

o

$val = preg_replace( "#/n|/r|/r/n#", ''<br />'', $val );


Si va a usar str_replace o preg_replace , probablemente debería colocar "/r/n" al comienzo de la matriz, de lo contrario, una secuencia /r/n se traducirá en dos etiquetas <br/> (ya que /r se emparejarán, y luego /n se combinarán).

p.ej:

$val = str_replace( array("/r/n", "/n","/r"), ''<br />'', $val );

o

$val = preg_replace( "#/r/n|/n|/r#", ''<br />'', $val );


Eche un vistazo a la función nl2br() . Debería hacer exactamente lo que quieres.


Para aquellos que quieran una respuesta que no dependa de nl2br() :

$newList = ereg_replace( "/n",''|'', $_POST[''theTextareaContents'']);

o (en este caso):

$newList = ereg_replace( "/n",''<br/>'', $_POST[''theTextareaContents'']);

Lado PHP: de la cadena Textarea a la cadena PHP

$newList = ereg_replace( "/n",''|'', $_POST[''theTextareaContents'']);

Lado de PHP: la cadena de PHP vuelve a la cadena TextArea:

$list = str_replace(''|'', ''&#13;&#10;'', $r[''db_field_name'']);