使用正则表达式删除冗余换行符
-
03-07-2019 - |
题
我正在使用PHP开发单一服务网站,只显示消息由访问者发布(理想情况下围绕网站主题)。任何人都可以每小时发布三条消息。
由于网站只有一页,我想控制每条消息的垂直长度。但是,我确实希望至少部分保留原始邮件中的换行符。折衷方案是允许两个换行符,但如果有两个换行符,则将它们替换为一行中总共两个换行符。 Stack Overflow实现了这一点。
例如:
<!>QUOT;豪猪\鼻孔\ n \ n \ n \ nporcupiney QUOT <!>;
将更改为
<!>“Porcupines <!> lt; br / <!> gt; <!> lt; br / <!> gt; <!> lt; br / <!> gt; porcupiney。<! > QUOT;
检查换行符的一个棘手方面是它们被收集并存储为\ r \ n,\ r或\ n的可能性。我想过使用nl2br()将所有换行符转换为<!> lt; br / <!> gt; s,但这似乎没必要。
我的问题:在PHP中使用正则表达式(使用preg_match()和preg_replace()等函数),如何检查一行中两个以上换行符的实例(它们之间是否有空格)然后将它们改为总共两个换行符?
解决方案
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)
其他提示
像
这样的东西preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);
我想,应该有效。虽然我不完全记得PHP语法,但它可能需要更多的转义: - /
不隶属于 StackOverflow