Elimine nuevas líneas de la cadena y reemplácelas con un espacio vacío

5 minutos de lectura

Elimine nuevas lineas de la cadena y reemplacelas con un
Jaime

$string = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

Quiere eliminar todas las líneas nuevas de la cadena.

Tengo esta expresión regular, puede capturarlos a todos, el problema es que no sé con qué función debo usarlo.

/\r\n|\r|\n/

$string debe convertirse:

$string = "put returns between paragraphs for linebreak add 2 spaces at end ";

  • Si está haciendo miles de reemplazos, evite usar preg_replace. Es casi el doble de lento que str_replace.

    – Alex W.

    20 de junio de 2014 a las 13:23

  • usted puede encontrar s($str)->normalizeLineEndings('') útil, como se encuentra en esta biblioteca independiente. No solo eliminará LF, CR y CRLF, sino también cualquier salto de línea Unicode.

    – graznido

    26 de julio de 2016 a las 23:58

1646964848 98 Elimine nuevas lineas de la cadena y reemplacelas con un
jwueller

Debe tener cuidado con los saltos de línea dobles, que causarían espacios dobles. Utilice esta expresión regular realmente eficiente:

$string = trim(preg_replace('/\s\s+/', ' ', $string));

Los espacios múltiples y las líneas nuevas se reemplazan con un solo espacio.

Editar: Como han señalado otros, esta solución tiene problemas para hacer coincidir nuevas líneas entre palabras. Esto no está presente en el ejemplo, pero uno puede ver fácilmente cómo podría ocurrir esa situación. Una alternativa es hacer lo siguiente:

$string = trim(preg_replace('/\s+/', ' ', $string));

  • Antes de usar esta solución, vea mi respuesta a continuación y los comentarios a mi respuesta. Es posible que esta solución no funcione como espera.

    – Matsolof

    23 de septiembre de 2010 a las 8:30

  • en la expresión regular “\s coincide con un carácter de espacio en blanco”, ¿por qué coincidiría con una nueva línea?

    – Michael Z.

    11 de junio de 2014 a las 0:00

  • Estaba buscando una solución para eliminar/reemplazar todos los espacios en blanco pero no los espacios (dobles). Esta es la expresión regular que lo hizo: /(?![ ])\s+/

    – algoritmo

    31 de julio de 2015 a las 7:53

  • Solo quería hacerle saber que su solución me ha ahorrado mucho tiempo.

    – Parthapratim Neog

    31 de julio de 2015 a las 10:26

  • Incorrecto. \s coincide con cualquier espacio en blanco, incluido el espacio, tabulación, nueva línea, retorno de carro. No tengo idea de cómo esto obtuvo tantos votos a favor. Para hacer coincidir las nuevas líneas, necesita \r?\n, que es una nueva línea precedida opcionalmente por un retorno de carro.

    – ekerner

    12 de octubre de 2020 a las 1:13

1646964849 457 Elimine nuevas lineas de la cadena y reemplacelas con un
matsolof

Algunos comentarios sobre la respuesta aceptada:

los + significa “1 o más”. no creo que tengas que repetir \s. Creo que simplemente puedes escribir '/\s+/'.

Además, si desea eliminar los espacios en blanco primero y último en la cadena, agregue trim.

Con estas modificaciones, el código sería:

$string = preg_replace('/\s+/', ' ', trim($string));

  • Estás bien; /\s\s+/ no coincidiría con el salto de línea en foo\nbar.

    –Alan Moore

    22 de septiembre de 2010 a las 23:18

1646964849 332 Elimine nuevas lineas de la cadena y reemplacelas con un
NullUserException

Solo usa preg_replace()

$string = preg_replace('~[\r\n]+~', '', $string);

Podrías salirte con la tuya str_replace() en este, aunque el código no se ve tan limpio:

$string = str_replace(array("\n", "\r"), '', $string);

Míralo en vivo idea

  • OP quiere un espacio entre “párrafos” y “para”. Si simplemente elimina los caracteres de nueva línea, no habrá uno.

    – Daniel Vandersluis

    21 de septiembre de 2010 a las 13:39

  • por favor corrige eso para $string = preg_replace("~[\r\n]~", "",$string);

    – erikbstack

    21 de septiembre de 2010 a las 13:42

  • De lo contrario, no hay nada más que decir. esa es la respuesta más simple, creo!

    – erikbstack

    21 de septiembre de 2010 a las 13:42

  • @erik Entonces estaría “corrigiéndolo”. Funciona bien como está.

    – NullUserException

    21 de septiembre de 2010 a las 13:44

  • @Vineet Es solo un delimitador que indica el inicio y el final de la expresión regular

    – NullUserException

    19 de abril de 2014 a las 14:59

Elimine nuevas lineas de la cadena y reemplacelas con un
tela

$string = str_replace(array("\n", "\r"), ' ', $string);

Debe usar str_replace por su velocidad y usar comillas dobles con una matriz

str_replace(array("\r\n","\r"),"",$string);

  • Bajo en recursos, perfecto, tks.

    – Pedro Lobito

    1 de septiembre de 2015 a las 14:14

  • Puede que me equivoque, pero este código no elimina el carácter de nueva línea en los sistemas Unix porque en esos sistemas la nueva línea es simplemente \n y no \r\n además, creo que el OP está pidiendo poner un solo espacio en lugar de nuevas líneas

    – Marco Demaio

    21 de enero de 2019 a las 20:48


  • @MarcoDemaio, solo agrega "\n", "\n\r" a la matriz.

    – Arris

    10 de febrero de 2021 a las 20:39

1646964851 253 Elimine nuevas lineas de la cadena y reemplacelas con un
jimmix

No estoy seguro de si esto tiene algún valor en comparación con las respuestas ya enviadas, pero también puedo publicarlo.

// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");

// Replace the line breaks with a space
$string = str_replace($searches, " ", $string);

// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);

  • Bajo en recursos, perfecto, tks.

    – Pedro Lobito

    1 de septiembre de 2015 a las 14:14

  • Puede que me equivoque, pero este código no elimina el carácter de nueva línea en los sistemas Unix porque en esos sistemas la nueva línea es simplemente \n y no \r\n además, creo que el OP está pidiendo poner un solo espacio en lugar de nuevas líneas

    – Marco Demaio

    21 de enero de 2019 a las 20:48


  • @MarcoDemaio, solo agrega "\n", "\n\r" a la matriz.

    – Arris

    10 de febrero de 2021 a las 20:39

1646964852 880 Elimine nuevas lineas de la cadena y reemplacelas con un
burbuja de burbujas

Secuencia de escape \R coincide con una nueva línea genérica

es decir, cualquier cosa considerada como secuencia de salto de línea por Unicode. Esto incluye todos los caracteres emparejados por \v (espacios en blanco verticales) y la secuencia de varios caracteres \x0D\x0A

$string = preg_replace('/\R+/', " ", $string);

En modo no UTF-8 de 8 bits \R es equivalente a lo siguiente: (?>\r\n|\n|\x0b|\f|\r|\x85)pcre.org

Demostración Regex101

  • ¡Anton, comprueba si mi edición está bien! Se agregó alguna información adicional.

    – burbuja de burbujas

    22 de julio de 2017 a las 20:43


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad