我想让<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的答案很棒,尽管它没有考虑到
空间。我们可以扩展这个正则表达式来包含
$html = preg_replace('#(<br *'/?>'s*( )*)+#', '<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>