我希望 <br /><br />
变成 <br />
使用正则表达式的模式是什么?
注意:连续出现多于2次的 <br />
标签也需要处理。
$html = preg_replace('#(<br */?>\s*)+#i', '<br />', $html);
这段代码可以匹配任何形式的 <br>
、<br/>
或 <br />
,无论它们之间有多少或者什么类型的空格,然后将它们替换为单个 <br />
。
'#<br\s*/?>(?:\s*<br\s*/?>)+#i'
(仅在有多个换行符时才进行替换)。 - ridgerunner如果您试图在HTML中使用正则表达式,您可能在做一些错误的事情。您可以使用s/(<br \/>)+/<br \/>/
,但这不是一个好方式。
编辑: 如果你的换行符混杂不清,你可以使用稍微更加强大的匹配模式:
/(<br\ ?\/?>)+/
这个模式将捕获<br/>
和<br>
,在某些情况下可能会有用。
msg.replace(/(<br ?\/?>)+/gi, '');
- Rafael Moni(<br />)+
这将匹配它们,因此您可以使用preg_replace
来替换它们(记得正确转义字符)。
这个很好用。它可以与下面所有的组合一起使用。
$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>
@FtDRbwLXw6的回答很好,尽管它没有考虑到
空格。我们可以扩展这个正则表达式来包括它:
$html = preg_replace('#(<br *\/?>\s*( )*)+#', '<br>', $html);