如何使用一个标签正确更换多个标签?

时间:2011-10-12 10:12:48

标签: php regex

我希望<br /><br />变成<br />

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

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

5 个答案:

答案 0 :(得分:32)

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

这将抓住<br><br/><br />与它们之间任何数量或类型的空白的任意组合,并将其替换为单个<br />

答案 1 :(得分:19)

可以使用s/(<br \/>)+/<br \/>/,但是如果你想在HTML上使用正则表达式,你可能会做错事。

编辑:如果您有混合休息时间,可以使用稍微更健壮的模式:

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

这也会抓住<br/><br>,这在某些情况下可能会有用。

答案 2 :(得分:1)

@ FtDRbwLXw6给出的答案很好,尽管它不占&nbsp;空间。我们可以扩展此正则表达式以使其包括在内:

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

答案 3 :(得分:0)

(<br />)+

将匹配它们以便您可以使用preg_replace替换它们(请记住正确转义字符)。

答案 4 :(得分:-1)

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

$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>