我有一个textarea用户输入注释,我使用nl2br允许他们在文本块之间添加空格。我想替换连续出现3个或更多br标签的情况,并用一个标签替换它们。
一个或两个br标签没有被替换它们很好但是还有更多需要用一个标签替换。
这是我到目前为止的正则表达式
$comment = preg_replace('/(<br \/>){3,}/', '<br />', $comment);
$ comment变量是
one<br />
<br />
<br />
<br />
<br />
two<br />
<br />
<br />
<br />
<br />
three<br />
<br />
four
将正则表达式更改为
$comment = preg_replace('/(<br \/>)/', '-', $comment);
用连字符替换所有br标签,所以它似乎与{3,}有关,但我不确定。
答案 0 :(得分:2)
您可以使用以下正则表达式。由于重复标记可能位于同一行或由换行序列分隔,因此您需要考虑空格。
$comment = preg_replace('~(?:<br />\s*){3,}~', '<br />', $comment);
如果由于某些逻辑原因它删除了您想要保留的某些空格,我会使用...
$comment = preg_replace('~(?:<br />\R?){3,}~', '<br />', $comment);
答案 1 :(得分:1)