Reputation: 329
I would like to remove excessive empty lines from a string, but allow one empty line between every line. Like:
line1
line2
Should become:
line1
line2
I did find the following regex (forgot where i found it):
preg_replace('/^\n+|^[\t\s]*\n+/m','',$message);
This works, but removes all empty lines without leaving an empty line between every line.
Edit: I just created a quick example at http://jsfiddle.net/RAqSS/
Upvotes: 6
Views: 5603
Reputation: 73
Based on your jsFiddle, try this:
$result = preg_replace('/\n(\n*\s)+/', "\n\n", $message);
Upvotes: 0
Reputation: 208405
Try the following:
preg_replace('/\n(\s*\n)+/', "\n\n", $message);
This will replace a newline followed by any number of blank lines with a single newline.
Upvotes: 4
Reputation: 44316
Try replacing:
\n(\s*\n){2,}
with:
\n\n
Like this:
preg_replace('/\n(\s*\n){2,}/', "\n\n", $message); // Quotes are important here.
If you don't want an empty line, you would change the {2,}
to a +
and use a single \n
. It would actually work with a +
instead of {2,}
. The {2,}
is an optimization.
Upvotes: 7