PHP múltiples líneas nuevas

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

James dijo hola \ n \ n \ n \ n Prueba \ n Prueba dos \ n \ n

Terminaría así:

James dijo hola \ n Prueba \ n Prueba dos \ n

Prueba este:

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

Mejorando la respuesta de Marc B:

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

Que debería coincidir con una nueva línea inicial, luego al menos uno de un grupo de cualquier cantidad de espacios en blanco seguidos por una nueva línea y reemplazarlo con una sola línea nueva.

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

Esto debería hacerlo, suponiendo que las nuevas líneas consecutivas son verdaderamente consecutivas y no tienen ningún espacio en blanco (tabs, espacios, retornos de carro, etc.) entre ellas.

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