如何Regex-replace多个<br />带有一个<br />标签


How to Regex-replace multiple <br /> tags with one <br /> tag?

我想让<br /><br />变成<br />

这个正则表达式的模式是什么?

注意:<br />标签可以连续出现2次以上。

$html = preg_replace('#(<br */?>'s*)+#i', '<br />', $html);

这将捕获<br>, <br/><br />的任何组合,它们之间有任何数量或类型的空白,并将它们替换为单个<br />

可以使用s/(<br '/>)+/<br '/>/,但是如果你试图在HTML上使用正则表达式,你很可能做错了。

Edit:如果你有混合break,你可以使用一个稍微健壮一点的模式:

/(<br' ?'/?>)+/

这将捕获<br/><br>,这在某些情况下可能是有用的。

(<br />)+

将匹配它们,因此您可以使用preg_replace来替换它们(记住要正确转义字符)。

来自@FtDRbwLXw6的答案很棒,尽管它没有考虑到&nbsp;空间。我们可以扩展这个正则表达式来包含

$html = preg_replace('#(<br *'/?>'s*(&nbsp;)*)+#', '<br>', $html);

这很好。它适用于下面所有的组合。

$html = '<br><br>
Some text
<br>
<br>
Some another<br/><br>';
$html = preg_replace("/(<br.*?>'s*)+('n)*+(<br.*?>)/","<br>",$html);

$html将更改为

<br>
Some text
<br>
Some another<br>
相关文章: