删除 php 中的冗余标签“<p><br></p>”?

Remove redundant tags '<p><br></p>' in php?

去掉字符串开头和结尾的多余标签<p><br></p>,中间只留下一个。

输入:

<p><br></p><p><br></p><p><br></p><p>gfdsgfdsgfds</p><p><br></p><p><br></p><p><br></p><p>gfdsgfdsgfdsgfds</p><p><br></p><p><br></p><p><br></p>

期望的输出:

<p>gfdsgfdsgfds</p><p><br></p><p>gfdsgfdsgfdsgfds</p>

替代的期望输出:

<p>gfdsgfdsgfds</p><p><br></p><p><br></p><p><br></p><p>gfdsgfdsgfdsgfds</p>

我试过使用:preg_replace

$string = preg_replace('/(<p><br></p>)+/', '', $string);

但结果为空

您需要在正则表达式中转义斜线 / 字符

$string = preg_replace('/(<p><br><\/p>)+/', '', $string);

另请注意,此 将删除出现多个这些模式的所有实例,结果如下:

<p>gfdsgfdsgfds</p><p>gfdsgfdsgfdsgfds</p>

要删除重复项但保留一个实例,可以执行以下操作:

$string = preg_replace('/(<p><br><\/p>)+/', '<p><br></p>', $string);

也许净化器 http://htmlpurifier.org/ 可以帮助您。例如,它可以清理 html 代码并在需要时删除 javascript。