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

问题描述 投票:6回答:3

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

line1





line2

应该成为:

line1

line2

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

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

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

编辑:我刚刚在http://jsfiddle.net/RAqSS/创建了一个快速示例

php regex
3个回答
7
投票

尝试更换:

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

有:

\n\n

像这样:

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

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


4
投票

请尝试以下方法:

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

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


0
投票

基于你的jsFiddle,试试这个:

$result = preg_replace('/\n(\n*\s)+/', "\n\n", $message);
© www.soinside.com 2019 - 2024. All rights reserved.