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(''|'', '' '', $r[''db_field_name'']);