El principal problema que tienes con todas las variaciones que has probado es que tanto \n
y \r
son caracteres de escape que solo se escapan cuando los usa en una cadena entre comillas dobles .
En PHP, hay una gran diferencia entre '\r\n'
y "\r\n"
. Tenga en cuenta las comillas simples en el primero y las comillas dobles en el segundo.
Entonces:'\r\n'
dará como resultado una cadena de cuatro caracteres que contiene una barra inclinada, una 'r', otra barra inclinada y una 'n', mientras que "\r\n"
contendrá dos caracteres, que son la nueva línea y los caracteres de retorno de carro.
Entonces, la respuesta directa a su pregunta es que necesita usar el segundo de los ejemplos que proporcionó en la pregunta, pero con comillas dobles en lugar de comillas simples:
$text = str_replace("\r\n",'', $text);
Vale la pena señalar que esto eliminará todos nuevas líneas de la entrada, y reemplácelas con nada. Si hay más de una línea nueva en la entrada, se eliminarán todas. Sin saber más acerca de su aplicación, no sé si esto es lo que quiere, pero aquí tiene algunas ideas:
-
Si solo desea eliminar las líneas en blanco (y otros espacios en blanco) del final de la cadena de entrada, puede usar
trim()
en su lugar. -
Si desea conservar el formato para la salida a HTML, entonces
nl2br()
función le ayudará. Si desea enviar a HTML sin el formato, es posible que no necesite eliminarlos, ya que el navegador no generará saltos de línea de \n caracteres. -
Si reemplaza líneas nuevas con nada, según su ejemplo, la última palabra de la primera línea ahora se ejecutará directamente en la primera palabra de la segunda línea, y así sucesivamente. Es posible que prefiera reemplazarlos con un carácter de espacio en lugar de nada.
-
Es posible que los usuarios envíen la entrada con solo
\n
sin el\r
coincidente , o viceversa (esto puede deberse a su sistema operativo o navegador, a un ataque deliberado o a otras razones). Si desea reemplazar todos instancias de estos dos personajes, una forma más confiable de hacerlo sería reemplazarlos individualmente, en lugar de depender de que estén uno al lado del otro.str_replace()
le permite hacer esto especificándolos en una matriz. También puede usarstrtr()
opreg_replace()
para lograr el mismo objetivo.
Espero que ayude.