tags:

views:

58

answers:

4

I'm a little stuck. How do I remove multiple newlines which are in a row with one newline. There could be anything up to 20 newlines next to each other. For example

James said hello\n\n\n\n Test\n Test two\n\n

Would end up as:

James said hello\n Test\n Test two\n

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

This should do it, assuming that the consecutive newlines are truly consecutive and don't have any whitespace (tabs, spaces, carriage returns, etc...) between them.

Marc B
+4  A: 

Try this one:

$str = "Hello\n\n\n\n\nWorld\n\n\nHow\nAre\n\nYou?";
$str = preg_replace("/\n+/", "\n", $str);
print($str);
kovshenin
A: 
$str = 'James said hello\n\n\n\n Test\n Test two\n\n';
echo preg_replace('{(\\\n)\1+}','$1',$str);
Alexander.Plutov
+2  A: 

Improving on Marc B's answer:

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

Which should match an initial newline, then at least one of a group of any amount of whitespace followed by a newline and replace it all with a single newline.

Danny Staple