php - 如何替换字符串中的一两个连续换行符?

标签 php regex pcre line-breaks

我正在开发 single serving site在 PHP 中,它只显示访问者发布的消息(最好围绕网站主题)。任何人每小时最多可以发布三条消息。

由于网站只有一页,我想控制每条消息的垂直长度。但是,我确实希望至少部分保留原始消息中的换行符。折衷方案是允许有两个换行符,但如果有两个以上,则将它们替换为连续两个换行符。 Stack Overflow 实现了这一点。

例如:

Porcupines\nare\n\n\n\nporcupiney.

将更改为

Porcupines<br />are<br /><br />porcupiney.

检查换行符的一个棘手方面是它们可能被收集并存储为 \r\n , \r , 或 \n .我考虑过将所有换行符转换为 <br />使用 nl2br() ,但这似乎是不必要的。

我的问题:在 PHP 中使用正则表达式(具有类似 preg_match()preg_replace() 的函数),我如何检查连续超过两个换行符的实例(它们之间有或没有空格)然后将它们更改为总共两个换行符?

最佳答案

preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)

关于php - 如何替换字符串中的一两个连续换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816085/

相关文章:

php - 如何在 Laravel 中将最后一个 ID 插入到数据库中?

javascript - 将 PHP 变量传递给 Javascript 不起作用

php - Laravel 5.5 从 URL 中删除登录以打开登录页面

正则小数或长度最多 7 个字符的整数字符串的正则表达式

php - sql UPDATES 更新更改列之后的行中的每一列

regex - C++ 11正则表达式捕获组的名称

java - 如何添加 html 标签但仍保持空格不变?

r - "'\w ' is an unrecognized escape"在 grep

PHP正则表达式: match several inclusion/exclusion rules for matches consisting of a complex character set

c - 如何将我的 C 代码与 PCRE 库链接起来? (当前抛出链接器错误。)