【发布时间】:2011-07-23 17:15:59
【问题描述】:
如何使用 DOM 或正则表达式删除此类型 p 标签<p>&nbsp;</p>?
我也想像这样删除多个p,
<p> </p>
<p> </p>
<p> </p>
【问题讨论】:
如何使用 DOM 或正则表达式删除此类型 p 标签<p>&nbsp;</p>?
我也想像这样删除多个p,
<p> </p>
<p> </p>
<p> </p>
【问题讨论】:
如果你想删除一个完全是 '<p>&nbsp;</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),您可以将 &nbsp 实体作为字符串 (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 查询 &nbsp;,希望这会有所帮助。
【讨论】: