Capturar caracteres de salto de línea (nueva línea, salto de línea) en un área de texto
-
08-07-2019 - |
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 textarea
Es CSS, pero aún no es suficiente.
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('|', ' ', $r['db_field_name']);
Lado PHP: cadena PHP de vuelta a la cadena TextArea:
<*>