从字符串中删除空行,但在每行之间允许一行为空

时间:2012-05-18 15:56:08

标签: php regex

我想从字符串中删除多余的空行,但在每行之间允许一个空行。像:

line1





line2

应该成为:

line1

line2

我确实找到了以下正则表达式(忘记了我发现的地方):

preg_replace('/^\n+|^[\t\s]*\n+/m','',$message);

这样可行,但删除所有空行而不在每行之间留空行。

编辑:我刚刚在http://jsfiddle.net/RAqSS/

创建了一个快速示例

3 个答案:

答案 0 :(得分:7)

尝试更换:

\n(\s*\n){2,}

使用:

\n\n

像这样:

preg_replace('/\n(\s*\n){2,}/', "\n\n", $message); // Quotes are important here.

如果您不想要空行,则可以将{2,}更改为+并使用单个\n。它实际上适用于+而不是{2,}{2,}是优化。

答案 1 :(得分:4)

尝试以下方法:

preg_replace('/\n(\s*\n)+/', "\n\n", $message);

这将替换换行后跟任意数量的空行和一个换行符。

答案 2 :(得分:0)

根据您的jsFiddle,试试这个:

$result = preg_replace('/\n(\n*\s)+/', "\n\n", $message);