2011-03-10 8 views
6

Quiero reemplazar las líneas nuevas (\ r \ n) con espacio, pero quiero mantener las líneas en blanco. En otras palabras, quiero reemplazar \ r \ n con '', si \ r \ n no está precedido por otro \ r \ n. Por ejemplo:Reemplace las líneas nuevas, pero conserve las líneas en blanco

line 1 

line 2 
line 3 
line 4 

shold terminan como ...

line 1 

line 2 line 3 line 4 

Pero no como "línea 1 Línea 2 Línea 3 Línea 4", que es lo que estoy haciendo ahora con este

preg_replace("/\r\n/", " ", $string); 

Respuesta

3

Prueba esto:

(?<!\n)\n(?!\n) 

Por supuesto, puede cambiar \n a lo que usted necesita.

Ejemplo de trabajo: http://ideone.com/dF5L9

+0

El único sugerido hasta ahora que realmente parece funcionar como se requiere. +1. –

+0

Hermoso. Usé (? ssam

2

Prueba esto:

preg_replace("/(.)\r\n(?=.|$)/", "$1 ", $string); 
+0

Nope. Todavía mata las líneas en blanco. Gracias por intentarlo. – ssam

+0

Esto reduce dos líneas nuevas a una, la primera, justo después de la 'línea 1', puede ser igualada por la expresión regular. – Kobi

+0

@ssam: mira mi actualización. – Gumbo

1

esto debería hacer lo truco:

preg_replace("/(?<!\n)\n(?!\n)/", " ", $string); 
Cuestiones relacionadas