我正在使用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语法,但它可能需要更多的转义: - /

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top