繁体   English   中英

PHP合并一行中的换行符数量并在必要时减少它?

[英]PHP Merge the number of line-breaks in a row and reduce it if necessary?

我有一个textarea,用户可以用PHP提交帖子。 我想检查一行中的换行符数量,并在必要时减少它,例如。

原版的:

Hello\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
Goodbye

我到底想要什么:

Hello\n
\n
Goodbye

所以基本上我想连续最多2个换行符 我怎样才能在PHP中实现这一点?

谢谢你的帮助。

PCRE:

preg_replace('/\n{3,}/m', "\n\n", $text);

我会做一个循环替换

$data = "Hello\n\n\n\n\n\n\n\n\n\n\n\n\nGoodbye";
while(($newdata = str_replace("\n\n\n", "\n\n", $data) != $data){
    $data = $newdata;
}

只要有可能,这将取代3 \\ n乘以2 \\ n。

请记住,你可能需要用\\ n替换所有\\ r \\ n,因为你的输入永远不会是完美的。 这也没有考虑到\\ n之间的空格的可能性。

要添加到tandu的响应,此变体也会考虑回车:

preg_replace(array('/\r/m','/\n{3,}/m'), array("\n","\n\n"), $text);

首先将\\r转换为\\n ,以便将\\r\\n序列缩减为\\n\\n 那么对于连续的过滤器\\n的完成工作。

暂无
暂无

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

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