0

如何<p>&nbsp;</p>使用 DOM 或正则表达式删除此类型 p 标记?

我也想像这样删除多个 p,

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
4

3 回答 3

5

如果你想删除一个完全是,总是,的字符串,'<p>&nbsp;</p>'最简单和最快的解决方案可能是使用str_replace()

$new_string = str_replace('<p>&nbsp;</p>', '', $old_string);

我认为在这种简单的情况下没有必要使用 DOM——而且这里不需要正则表达式。


当然,如果您需要替换更复杂的东西,那并不总是完全相同的字符串......好吧,是时候进行 DOM 操作了 ;-)

于 2011-07-23T17:17:56.723 回答
0
preg_replace("|<p>&nbsp;</p>|", "", "<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>");
于 2011-07-23T17:17:33.027 回答
0

如果您想使用 xpath 执行此操作(str_replace但是您的示例要求很高),您可以将&nbsp实体查询为字符串(Demo):

$html = '<body><p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Not empty :)</p>
</body>';

$dom = new DomDocument();
$dom->loadhtml($html);
$xpath = new DomXPath($dom);
$col = $xpath->query("//p[text()=\"\xC2\xA0\"]"); # &nbsp;
foreach($col as $e) {
    $e->parentNode->removeChild($e);
}
echo $dom->saveXML($dom->getElementsByTagName('body')->item(0));

如果您需要&nbsp;使用 xpath 进行查询,希望这会有所帮助。

另见:使用 XPATH 搜索包含

于 2011-07-23T17:46:05.360 回答