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

StackOverflow https://stackoverflow.com/questions/289159

Pregunta

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 reemplazarlo con un <br/>.

¿Es eso posible?

Intenté configurar white-space:pre sobre el textareaEs CSS, pero aún no es suficiente.

¿Fue útil?

Solución

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

Otros consejos

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; esto generalmente no es un problema, pero si desea eliminarlas por completo y capturar también retornos de carro, debe usar un str_replace o preg_replace

Creo que str_replace sería un poco más rápido, pero no he realizado una evaluación comparativa;

$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 el "\r\n" al comienzo de la matriz, de lo contrario, una secuencia \r\n se traducirá en dos etiquetas <br/> (ya que el \r coincidirá y luego el \n coincidirá).

por ejemplo:

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

o

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

Para aquellos que desean una respuesta que no se base en 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

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

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

<*>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top