6

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

line1





line2

应该变成:

line1

line2

我确实找到了以下正则表达式(忘记在哪里找到它):

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

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

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

4

3 回答 3

7

尝试更换:

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

和:

\n\n

像这样:

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

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

于 2012-05-18T16:01:27.563 回答
4

尝试以下操作:

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

这将用一个换行符替换一个换行符,然后是任意数量的空白行。

于 2012-05-18T16:00:23.983 回答
0

根据您的 jsFiddle,试试这个:

$result = preg_replace('/\n(\n*\s)+/', "\n\n", $message);
于 2012-05-18T16:07:05.057 回答