2011-09-19 43 views
1

将两条以上的新行减少到一个的正确方法是什么?将两个以上的新行减少为一个

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

谢谢!

+0

我认为你必须澄清你的问题。正如你指定的那样,三个换行符被减少到一个。您的“预期”输出将三个换行符减少到两个。所以你想要什么? –

+0

这不正是它所做的?在预期的结果中,有超过1个新行。似乎实际回报是你想要的? –

回答

0

也许这有帮助吗?

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

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

我不知道你的困惑是什么...更换2个或更多\n一个\n会导致一个换行符,这是你会得到什么。从你的例子来看,你似乎想要双重突破。 (A线断裂,然后空行,然后另一个换行符。)

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

NB,我也在正则表达式除去不必要的[]周围\n

0

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

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

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