将两个以上的新行减少为一个

时间:2011-09-19 13:10:44

标签: php regex

什么方法可以将两条以上的新线减少为一条呢?

preg_replace('/[\n]{2,}/', "\n", "Hi,\nHow are you?\n\n\nI am just testing");

返回:

Hi,
How are you?
I am just testing

虽然预期的结果是:

Hi,
How are you?

I am just testing

目标是重新格式化电子邮件的文本并更改任何空格> 3比1

谢谢!

3 个答案:

答案 0 :(得分:2)

我不确定你的混淆是什么......用一个\n替换2个或更多\n将导致单个换行符,这就是你得到的。从你的例子来看,你似乎想要一个双线休息。 (一个换行符,然后是一个空行,然后是另一个换行符。)

preg_replace('/\n{2,}/', "\n\n", "Hi,\nHow are you?\n\n\nI am just testing");

请注意,我还删除了正则表达式中[]周围不必要的\n

答案 1 :(得分:0)

也许这有帮助?

$string = str_replace("   ", "\n", $string);

$string = str_replace("   ", " ", $string);

答案 2 :(得分:0)

只是改进了以前的答案。 从你的例子来看,你似乎想要一个双线休息。 (一个换行符,然后是一个空行,然后是另一个换行符)

preg_replace('/\n{3,}/', "\n\n", "Hi,\nHow are you?\n\n\nI am just testing");

{3,}因为不需要匹配/替换两个或更少的\ n。 NB:我发布了一个新的答案,因为我还没有声誉添加评论。