preg_replace删除空标记但保留blockquotes的结尾

时间:2009-12-12 12:25:11

标签: php regex preg-replace pcre

我创建了这个表达式来删除页面中所有空的(包含空格的标签)标签。

$content =  preg_replace('/<[^\/>]*>([\s]?)*<\/[^>]*>/', '', $content);

它必须处理这样的内容才能得到很好的待遇......

 <blockquote>
<p >foo bar</p>
</blockquote>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

并将其输出为......

<blockquote>
<p >this is a test for the pluggin</p>
<p ><a href="image.jpg" rel="lightbox" title=""><img  title="image" src="image.jpg" /></a><br /></p>

因此删除了</blockquote>

我一直在摸不着头脑,无法让它发挥作用。任何人都可以看到一个明显的解决方案,除了指定它应格式化的标签我还应该说它是在wordpress帖子上格式化'the_content'。

2 个答案:

答案 0 :(得分:3)

正则表达式和HTML不是很好的匹配,因为HTML不是常规语法,并且没有结束边缘情况和陷阱。最好使用诸如this one之类的HTML解析器并检查/操作DOM对象。

答案 1 :(得分:0)

您可能还想看看HTML Purifier,它比Simple HTML Dom更先进,如果您发现它没有获得所有标签。