繁体   English   中英

PHP正则表达式将4个或更多的换行符压缩为3个换行符

[英]PHP regex to condense 4 or more line breaks into 3 line breaks

谢谢你的协助! 我已经在互联网上进行了搜索,但找不到我要找的答案。

我具有评论功能,但我不希望用户句子之间的空行超过2条。 例:

1st Line - 1 break
2nd Line - 2 breaks

3rd Line - 3 breaks


4th Line - 4 breaks



5th Line - 5 breaks




6th Line

应该凝结为:

1st Line - 1 break
2nd Line - 2 breaks

3rd Line - 3 breaks


4th Line - 4 breaks


5th Line - 5 breaks


6th Line

该解决方案还需要删除由空格和制表符包围的换行符,以使用户无法绕过换行符冷凝。

我尝试了以下操作,但最终只删除了句子后面的换行符之外的所有换行符:

$text = preg_replace("/(\s*\R\s*)/", "\n", $text);

$text = preg_replace("/\R{3,}/", "\n\n\n", $text);


Results in:

1st Line - 1 break
2nd Line - 2 breaks
3rd Line - 3 breaks
4th Line - 4 breaks
5th Line - 5 breaks
6th Line

任何帮助是极大的赞赏! 感谢您抽出宝贵时间查看我的问题。 祝你有美好的一天!

您可以使用以下php正则表达式:

$str = preg_replace('/(?:\h*\R){3,}/', '\n\n\n', $str);

正则演示

此正则表达式匹配使用

  • (?:\\h*\\R) :匹配0个或多个水平空格,后跟任何换行符。 (?:...)适用于非捕获组。
  • (?:\\h*\\R){3,} :匹配3个或更多出现的分组表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM