2010-10-29 17 views
6

Estoy un poco atascado. ¿Cómo elimino múltiples líneas nuevas que están en una fila con una nueva línea? Puede haber hasta 20 nuevas líneas al lado una de la otra. Por ejemploPHP múltiples líneas nuevas

James dijo hola \ n \ n \ n \ n Test \ n de prueba de dos \ n \ n

terminaría como:

James dijo hola \ n Test \ n de prueba de dos \ n

Respuesta

10

Prueba con esto:

$str = "Hello\n\n\n\n\nWorld\n\n\nHow\nAre\n\nYou?"; 
$str = preg_replace("/\n+/", "\n", $str); 
print($str); 
1
$fixed_text = preg_replace("\n+", "\n", $text_to_fix); 

Esto debe hacerlo, asumiendo que las nuevas líneas consecutivas son verdaderamente consecutiva y no tienen ningún espacio en blanco (espacios, tabulaciones, retornos de carro, etc ...) entre ellos.

0
$str = 'James said hello\n\n\n\n Test\n Test two\n\n'; 
echo preg_replace('{(\\\n)\1+}','$1',$str); 
4

La mejora en la respuesta de Marc B:

$fixed_text = preg_replace("\n(\s*\n)+", "\n", $text_to_fix); 

que debe coincidir con una nueva línea inicial, entonces al menos uno de un grupo de cualquier cantidad de espacios en blanco seguido de una nueva línea y reemplazarlo todo con una sola nueva línea.

Cuestiones relacionadas