我有一个文本区,用户可以在这里用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;
}
只要有可能,这将用2取代3。
请记住,您可能也需要用替换所有内容,因为您的输入永远不可能是完美的。这也没有考虑到n之间存在空白的可能性。
为了添加到tandu的响应中,这种变化也考虑了回车:
preg_replace(array('/'r/m','/'n{3,}/m'), array("'n","'n'n"), $text);
首先将'r
的序列转换为'n
的序列,使'r'n
序列还原为'n'n
序列。然后,顺序'n
的筛选器完成该作业。