删除多余的标签&#39; <p> <br/> </p>&#39;在PHP?

时间:2016-06-21 13:48:44

标签: php regex preg-replace summernote

删除字符串开头和结尾的冗余标记<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);

但结果为空。

2 个答案:

答案 0 :(得分:1)

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

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

另请注意,此将删除其中多个这些模式的所有实例,从而产生以下结果:

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

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

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

答案 1 :(得分:0)

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