$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 atraparlos a todos, el problema es que no sé con qué función debería usarla.
/\r\n|\r|\n/
$string
debe convertirse:
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
preg_replace
. Es casi el doble de lento questr_replace
.s($str)->normalizeLineEndings('')
útil, como se encuentra en esta biblioteca independiente . Eliminará no solo LF, CR y CRLF, sino también cualquier nueva línea Unicode.Respuestas:
Debe tener cuidado con los saltos de línea doble, lo que causaría espacios dobles. Use esta expresión regular realmente eficiente:
Múltiples espacios y nuevas líneas se reemplazan con un solo espacio.
Editar: como otros han señalado, esta solución tiene problemas para hacer coincidir nuevas líneas individuales 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:
fuente
/(?![ ])\s+/
Algunos comentarios sobre la respuesta aceptada:
Los
+
medios "1 o más". No creo que necesites 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:
fuente
/\s\s+/
no coincidiría con el salto de líneafoo\nbar
.Solo usa
preg_replace()
Podría salirse con la suya
str_replace()
, aunque el código no se ve tan limpio:Véalo en vivo en ideone
fuente
$string = preg_replace("~[\r\n]~", "",$string);
fuente
\r
caracteresDebe usar str_replace por su velocidad y usar comillas dobles con una matriz
fuente
\n
y no\r\n
más, creo que el OP está pidiendo poner un solo espacio en lugar de nuevas líneasNo estoy seguro de si esto tiene algún valor contra las respuestas ya enviadas, pero también puedo publicarlo.
fuente
Los reemplazos de expresiones regulares PCRE se pueden hacer usando preg_replace: http://php.net/manual/en/function.preg-replace.php
Reemplazaría una nueva línea o devolvería caracteres con un espacio. Si no desea que nada los reemplace, cambie el segundo argumento a
''
.fuente
preg
funciones usan PCRE, no POSIX, expresiones regulares. Hayereg
funciones que usan POSIX, pero ahora están en desuso.Utilizar este:
reemplazar series de nuevas líneas con una cadena vacía:
o probablemente desee reemplazar las nuevas líneas con un solo espacio:
fuente
\\n
parece terrible.\\\\
hacer coincidir una barra invertida es horrible.La secuencia de escape
\R
coincide con una nueva línea genéricaRegex101 Demo
fuente
Los saltos de línea en el texto generalmente se representan como:
\ r \ n - en una computadora con Windows
\ r - en una computadora Apple
\ n - en Linux
fuente
De que se trata:
Esta debería ser una solución bastante sólida porque \ n no funciona correctamente en todos los sistemas si no me equivoco ...
fuente
Me sorprendió ver lo poco que todos saben sobre expresiones regulares.
Strip newlines en php es
En perl
Lo que significa reemplazar cualquier carácter de nueva línea al final de la línea (para mayor eficiencia), opcionalmente precedido por un retorno de carro, con un espacio.
\ n o \ 015 es nueva línea. \ r o \ 012 es el retorno de carro. ? en regex significa coincidencia 1 o cero del carácter anterior. $ en expresiones regulares significa el final de la línea del partido.
La referencia original y mejor regex es perldoc perlre, cada codificador debe conocer este documento bastante bien: http://perldoc.perl.org/perlre.html Tenga en cuenta que no todas las funciones son compatibles con todos los idiomas.
fuente
este es el patrón que usaría
fuente
tal vez esto funciona:
fuente
Este también elimina pestañas
fuente
Puede probar el siguiente código preservará cualquier espacio en blanco y nuevas líneas en su texto.
fuente
Muchas de estas soluciones no funcionaron para mí. Esto hizo el truco sin embargo:
Aquí está la referencia: - PCRE y nuevas líneas
fuente
este código a continuación funciona con todo el texto, úselo:
fuente
Puede eliminar una nueva línea y múltiples espacios en blanco.
fuente