yenes
Una variable php contiene la siguiente cadena:
<p>text</p>
<p>text2</p>
<ul>
<li>item1</li>
<li>item2</li>
</ul>
Quiero eliminar todos los caracteres de nueva línea en esta cadena para que se vea así:
<p>text</p><p>text2><ul><li>item1</li><li>item2</li></ul>
He intentado lo siguiente sin éxito:
str_replace('\n', '', $str);
str_replace('\r', '', $str);
str_replace('\r\n\', '', $str);
¿Alguien sabe cómo arreglar esto?
coadicto
Necesitas colocar el \n
entre comillas dobles.
Dentro de comillas simples se trata como 2 caracteres '\'
seguido por 'n'
Necesitas:
$str = str_replace("\n", '', $str);
Una mejor alternativa es usar PHP_EOL
como:
$str = str_replace(PHP_EOL, '', $str);
-
PHP_EOL de hecho no funciona. PHP no los encontrará correctamente en str_replace. Tengo que hacer esto para una visualización html correcta: reemplace \r\n con
(esto es para CRLF en Windows), luego reemplace \n con
(esto es para LF en Linux), por último, reemplace \r con cadena vacía (esto no debería significar nada)– Scott Chu
9 de julio de 2015 a las 9:39
-
Por cierto,
PHP_EOL
No funciona. Debiera ser["\r\n", "\r", "\n"]
en cambio.– Matt K.
1 de febrero de 2017 a las 22:14
-
¿Realmente necesitas el
"\r\n"
en["\r\n", "\r", "\n"]
? Ya se va a eliminar globalmente\r
y \n` en todas partes, ¿verdad?-James M. Lay
10 de diciembre de 2017 a las 0:28
-
FWIW, en PHP 7 pude usar
$str = str_replace(PHP_EOL, '', $str);
y funcionó con éxito.– JustCarty
11 de diciembre de 2017 a las 11:12
-
@JustCarty Eso podría haber funcionado en su caso específico, pero asume que el valor de
$str
se creó en la misma plataforma que el sistema que ejecuta el script. Si mezcla Windows y Unix, tendrá un mal día.– musicin3d
16/03/2018 a las 21:59
kapá
tienes que envolver \n
o \r
en ""
no ''
. Cuando se utilizan comillas simples, las secuencias de escape no se interpretarán (excepto \'
y \\
).
Si la cadena está entre comillas dobles (“), PHP interpretará más secuencias de escape para caracteres especiales:
\norte avance de línea (LF o 0x0A (10) en ASCII)
\r retorno de carro (CR o 0x0D (13) en ASCII)\
(…)
-
Esto es importante. Solía usar comillas simples
'
y el texto siempre se reemplaza con"\n"
(tipo de cadena). Si te confundes con esto, tenlo en cuenta….– Benyi
4 mayo 2017 a las 17:53
Algo un poco más funcional (fácil de usar en cualquier lugar):
function replace_carriage_return($replace, $string)
{
return str_replace(array("\n\r", "\n", "\r"), $replace, $string);
}
Usando PHP_EOL ya que el parámetro de reemplazo de búsqueda también es una buena idea. Prestigio.
-
Tomado prestado de stackoverflow.com/questions/33850820/… ¡Gracias! +1
–Steve
22 de noviembre de 2015 a las 16:04
asif mulla
esto debería ser como
str_replace("\n", '', $str); str_replace("\r", '', $str); str_replace("\r\n", '', $str);
Para eliminar nuevas líneas de la cadena, siga el siguiente código
$newstring = preg_replace("/[\n\r]/","",$subject);
-
funciona muy bien en laravel para eliminar la nueva línea de la descripción del producto.
– calin24
15 mayo 2018 a las 11:21
rvandoni
puede pasar una matriz de cadenas a str_replace
por lo que puede hacer todo en una sola declaración:
$content = str_replace(["\r\n", "\n", "\r"], "", $content);
-
funciona muy bien en laravel para eliminar la nueva línea de la descripción del producto.
– calin24
15 mayo 2018 a las 11:21
jonathan
Salida correcta:
'{"data":[{"id":"1","reason":"hello\\nworld"},{"id":"2","reason":"it\\nworks"}]}'
function json_entities( $data = null )
{
//stripslashes
return str_replace( '\n',"\\"."\\n",
htmlentities(
utf8_encode( json_encode( $data) ) ,
ENT_QUOTES | ENT_IGNORE, 'UTF-8'
)
);
}
-
Esto no es ni remotamente una respuesta a esta pregunta. De hecho, el solamente Lo que la pregunta y la respuesta tienen en común es el carácter de nueva línea ‘\n’ literal y el uso de
str_replace
aunque con propósitos completamente diferentes.–Michael Gaskill
28 de junio de 2016 a las 1:50
-
Tienes una razón, funciona para mí porque uso TextArea y, a veces, necesito una nueva línea y estos datos se envían mediante angular ng-init
– Jonathan
7 julio 2016 a las 18:07
usted puede encontrar
s($str)->normalizeLineEndings('')
útil, como se encuentra en esta biblioteca independiente. Elimina todo tipo de saltos de línea, incluidos los caracteres Unicode.– graznido
27 de julio de 2016 a las 0:53
Solo usa
"
en vez de'
.– Nabi Kaz
17 de junio de 2019 a las 18:23