使用DOM或regex删除<p> </p>

时间:2011-07-23 17:15:59

标签: php html regex domparser

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

我也希望删除多个p,

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

3 个答案:

答案 0 :(得分:5)

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

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

我认为没有必要将DOM 用于这么简单的案例 - 这里不需要正则表达式。


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

答案 1 :(得分:0)

preg_replace("|<p>&nbsp;</p>|", "", "<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>");

答案 2 :(得分: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));

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

请参阅:Using XPATH to search text containing