Remove empty lines from string, but allow one empty between every line

php, regex

Solution

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.

Problem

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/

Original source