问题描述:
我如何删除使用DOM或正则表达式这种类型的p标签<p> </p>
?删除<p> </p>与DOM或正则表达式
我想将它删除多个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,这是有帮助的。
没有正则表达式的解决方案总是快 – WooDzu
如果线路是固定的,甚至额外的空间将打破它,甚至也不会改变输出。 –
@WooDzu:正则表达式比简单的str_replace()快吗?不太确定。 –