2011-07-05 13 views
6

por alguna razón esto: preg_replace("/\\n/", "<br />", $string); no funciona.preg_replace n en la cadena

La cadena emite en este formato: blah blah blah\nblah blah blah incluso después de reemplazar el preg.

Todo lo que quiero hacer es cambiar si por un <br />.

nl2br() tampoco funciona, pero como es solo texto no estaba seguro de si debería.

Gracias

** Actualización **

los preg_replace obras en una palabra de la cadena. :(

+4

¿Realmente salió '\ n'? ¿Estás seguro de que es una nueva línea y no solo un '\' y 'n'? – KingCrunch

+0

no ... es por eso que pensé que nl2br no funcionaría y por qué tenía '\\ n' en mi preg replace para escapar de' \ ' –

+0

que no estoy insertando en una base de datos ... esto es solo para mostrar en un sitio web. –

Respuesta

5

prueba este

str_replace("\n", "<br />", $string); 
+0

funciona con comillas simples como lo sugirió Felix. :) gracias –

+0

Esto puede funcionar con comillas simples (y de hecho, el preg_replace con comillas simples NO funciona para mi script de prueba), pero no explica por qué el preg_replace no funcionará. – NotoriousWebmaster

+0

'NO' funciona con comillas simples en la mayoría de los casos. –

7

Si desea reemplazar el literal \n y no a la nueva línea real, Probar:

<?php 
echo preg_replace("/\\\\n/", "<br />", 'Hello\nWorld'); 

Aviso el número de barras invertidas La doble cita encerrado. La cadena /\\\\n/ es interpretada por el motor de PHP como /\\n/. Esta cadena cuando se pasa al motor de preg se interpreta como el literal \n.

Tenga en cuenta que PHP interpretará "\n" como el carácter ASCII 0x0A. Del mismo modo, el motor de preg interpretará '/\n/' como un carácter de nueva línea (no estoy seguro de cuál/s).

+0

Como ''Hello \ nWorld'' tiene una sola cita, no está probando el reemplazo de una línea nueva. Esto funciona: 'echo preg_replace ("/\\ n/"," "," this that ");' (Reemplaza el espacio entre "esto" y "eso" presionando Enter y cerrando la cita en la siguiente línea.) –

4

¿Has probado con el modificador de líneas múltiples en tu RegEx?

preg_replace("/\\n/m", "<br />", $string); 
+0

+1 '\ n' necesita el modo multilínea. – hakre

+0

La otra respuesta con los escapes adicionales es la respuesta correcta en este caso. Estaba enfrentando el mismo problema, el texto tiene el carácter '\' seguido del carácter 'n' y el objetivo es reemplazarlo con el carácter de nueva línea 0x0A. – KenB

Cuestiones relacionadas