删除空段(<p>)标签的正确正则表达式(对于PHP preg_replace)是什么?</p>

时间:2010-09-20 22:08:21

标签: php regex wordpress preg-replace

我在Wordpress工作,需要能够删除图像和空段落。到目前为止,我已经找到了如何删除图像没有问题。但是,我需要删除空的段落标记。我正在使用PHP preg_replace来处理正则表达式函数。

所以,举个例子,我有字符串:

<p style="text-align:center;"><img src="http://www.blah.com/image.jpg" alt="Blah Image" /></p><p>Some text</p>

我在上面运行这个正则表达式:

/<img.*?(>)/

我最终得到了这个字符串:

<p style="text-align:center;"></p><p>Some text</p>

然后我需要能够删除空段落。我尝试了这个,但它删除了所有段落和段落的内容:

/<p[^>]*><\/p[^>]*>/

非常感谢任何帮助/建议!

2 个答案:

答案 0 :(得分:3)

正确的正则表达式是没有正则表达式。请改用HTML / DOM Parser。它们易于使用。正则表达式适用于常规语言(HTML不是)。

答案 1 :(得分:0)

/<p[^>]*><\/p[^>]*>/(你给的正则表达式)应该可以正常工作。如果它给您带来麻烦,您可以尝试双重转义/,如下所示:/<p[^>]*><\\/p[^>]*>/

PHP引用和转义字符很有趣。例如,"\n"不等于'\n'。第一个是换行符,第二个是字面反斜杠后跟'n'。关于字符串文字的PHP手册输入可能值得一看。