[英]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.