如何<p> </p>
使用 DOM 或正则表达式删除此类型 p 标记?
我也想像这样删除多个 p,
<p> </p>
<p> </p>
<p> </p>
如果你想删除一个完全是,总是,的字符串,'<p> </p>'
最简单和最快的解决方案可能是使用str_replace()
:
$new_string = str_replace('<p> </p>', '', $old_string);
我认为在这种简单的情况下没有必要使用 DOM——而且这里不需要正则表达式。
当然,如果您需要替换更复杂的东西,那并不总是完全相同的字符串......好吧,是时候进行 DOM 操作了 ;-)
preg_replace("|<p> </p>|", "", "<p> </p>
<p> </p>
<p> </p>");
如果您想使用 xpath 执行此操作(str_replace
但是您的示例要求很高),您可以将 
实体查询为字符串(Demo):
$html = '<body><p> </p>
<p> </p>
<p> </p>
<p>Not empty :)</p>
</body>';
$dom = new DomDocument();
$dom->loadhtml($html);
$xpath = new DomXPath($dom);
$col = $xpath->query("//p[text()=\"\xC2\xA0\"]"); #
foreach($col as $e) {
$e->parentNode->removeChild($e);
}
echo $dom->saveXML($dom->getElementsByTagName('body')->item(0));
如果您需要
使用 xpath 进行查询,希望这会有所帮助。