Una variable php que contiene la siguiente cadena:

<p>text</p>
<p>text2</p>
<ul>
<li>item1</li>
<li>item2</li>
</ul>

Quiero quitar todos los caracteres de salto de línea en esta cadena así, la cadena tendrá este aspecto:

<p>text</p><p>text2><ul><li>item1</li><li>item2</li></ul>

He intentado sin éxito:

str_replace('\n', '', $str);
str_replace('\r', '', $str);
str_replace('\r\n\', '', $str);

Alguien sabe cómo solucionar este problema?

InformationsquelleAutor Yens | 2010-10-21

9 Comentarios

  1. 92

    Necesita colocar el \n en comillas dobles.
    Dentro de comillas simples es tratada como 2 caracteres '\' seguido por 'n'

    Usted necesita:

    $str = str_replace("\n", '', $str);

    Una mejor alternativa es el uso de PHP_EOL como:

    $str = str_replace(PHP_EOL, '', $str);
    • ¿Por qué no ?
    • PHP_EOL de hecho, no funciona. PHP no encuentras correctamente en str_replace. Tengo que hacer esto para su correcta visualización html: reemplazar \r\n <br / > (esto es para CRLF bajo Windows), y luego reemplace \n con <br / >(esto es para LF bajo Linux), por último, reemplazar \r con la cadena vacía (esto no debería decir nada)
    • Sí a comillas dobles. No a PHP_EOL como se explicó anteriormente.
    • De hecho, PHP_EOL no funciona. Debe ser ["\r\n", "\r", "\n"] lugar.
    • He perdido mucho tiempo tratando de depurar mi código porque de este problema. Gracias!
    • ¿Usted realmente necesita el "\r\n" en ["\r\n", "\r", "\n"]? Ya está pasando a nivel mundial quitar \r y \n` en todas partes, ¿verdad?
    • FWIW, en PHP 7 yo era capaz de utilizar $str = str_replace(PHP_EOL, '', $str); y ha funcionado correctamente.
    • Que podría haber funcionado en su caso específico, pero se supone que el valor de $str fue creado en la misma plataforma que el sistema ejecuta la secuencia de comandos. Si usted mezcla windows y unix, vas a tener un mal día.
    • Sé que esto es viejo, pero supongo que sólo quiero saber por qué todo el mundo se destruyera su respuesta para el uso de una constante de php cuando la única referencia que tenemos es Un entorno de php. Me sale que «\r\n» cubrirá más de los casos, pero todos están en lo alto de su caballo sin considerar «\025» para IBM… aún creo que PHP_EOL es la mejor respuesta en este contexto, debido a la supuesta necesidad de «\r\n» se basa en una suposición. Supongo que es la razón por la codaddict ha ~100 veces o más la reputación de los demás en estos comentarios. Pero soy un noob yo… tal vez él cambió de opinión después de 8 años? Espero que le pesa en
    • Como con todas las cosas, realmente depende de qué supuestos se puede hacer realidad. Donde se hará la aplicación se ejecute, y donde se hará la entrada (por ejemplo. archivo, base de datos, etc) vienen? Si sólo se ejecuta en una arquitectura y usted sabe que uno, usted puede conseguir lejos con usar el nativo carácter de retorno. Si la aplicación se ejecuta en un arco y el mismo arco creado/crea la entrada, usted debe utilizar PHP_EOL. Si, sin embargo, no podemos garantizar donde se ejecute o que el arco creado la entrada te vale estar preparado para manejar caracteres de retorno no se admite de forma nativa en todos los posibles arquitecturas.
    • Por ejemplo, ¿qué pasa si usas linux, su compañero de equipo utiliza mac, y el probador se utiliza windows? ¿Qué sucede cuando usted copia de una persona de la base de datos a otro? ¿Qué sucede si usted se mueve de su aplicación, que fue escrito en un «cross-platform» lengua a otra plataforma?

  2. 18

    Usted tiene que envolver \n o \r en "", no ''. Cuando el uso de comillas simples secuencias de escape no podrá ser interpretada (excepto \' y \\).

    En el manual se establece:

    Si la cadena está encerrada entre comillas dobles («), PHP interpretará
    más secuencias de escape para caracteres especiales:

    • \n de avance de línea (LF o 0x0A (10) en ASCII)

    • \r retorno de carro (CR o 0x0D (13) en ASCII)\

    • (…)

    • Esto es importante. Yo solía usar comillas simples ' y el texto siempre se puede reemplazar con "\n"(tipo de cadena). Si estás confundiendo con esto, ten eso en cuenta….
  3. 9

    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);
    }

    Utilizando PHP_EOL como la búsqueda de reemplazo de parámetro también es una buena idea! Kudos.

  4. 5

    Esto debe ser como

    str_replace("\n", ", $str); 
    str_replace("\r", ", $str); 
    str_replace("\r\n", ", $str); 
    
  5. 4

    Para eliminar las nuevas líneas de cadena, siga el siguiente código

    $newstring = preg_replace("/[\n\r]/","",$subject); 
    • funciona muy bien en laravel para eliminar el salto de línea de la descripción del producto.
  6. 1

    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 sólo cosa que la pregunta y la respuesta que tienen en común es el carácter de nueva línea ‘\n’ literal y el uso de str_replace, aunque totalmente diferentes propósitos.
    • Tienes razón, funciona para mí, porque yo uso TextArea y, a veces necesita de la nueva línea y este envío de datos por angulares ng-init
  7. 0

    Reemplazar una cadena :

    $str = str_replace("\n", '', $str);

    u usar también como,
    (%n,
    %t,
    Todos los caracteres Especiales, números, char,. etc)

    lo que significa que cualquier cosa que u puede reemplazar en una cadena.

  8. 0

    se puede pasar un array de cadenas de str_replace, por lo que usted puede hacer todo en una sola instrucción:

    $content = str_replace(["\r\n", "\n", "\r"], "", $content);

Dejar respuesta

Please enter your comment!
Please enter your name here