使用PHP删除所有空的html元素:DOMDocument

时间:2016-11-01 19:13:19

标签: php domdocument

有没有办法在不使用正则表达式的情况下从html中删除所有空元素?

我用DOMXPath

完成了这项工作
$this->dom->loadHTML($document, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new \DOMXPath($this->dom);
while (($node_list = $xpath->query('//*[not(*) and not(@*) and not(text()[normalize-space()])]')) && $node_list->length) {
    foreach ($node_list as $node) {
        $node->parentNode->removeChild($node);
    }
}

1 个答案:

答案 0 :(得分:0)

由于可能不太清楚,作者已经回答了问题(通过编辑帖子),我无法评论以要求适当的问题关闭,复制与实际答案相同的代码。
重要的一点:评论涉及另一个主题,但那里的解决方案适用于平面文档,而 OP 的解决方案适用于深树。它帮助了我很多。

$this->dom->loadHTML($document, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new \DOMXPath($this->dom);
while (($node_list = $xpath->query('//*[not(*) and not(@*) and not(text()[normalize-space()])]')) && $node_list->length) {
    foreach ($node_list as $node) {
        $node->parentNode->removeChild($node);
    }
}