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

使用PHP:DOMDocument删除所有空html元素,php,domdocument,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-

有没有办法不使用正则表达式就从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);
    }
}

由于可能很不清楚,作者(通过编辑帖子)已经回答了这个问题,因此我无法发表评论要求适当的问题结束,复制与实际答案相同的代码。
重要的一点是:注释涉及另一个主题,但是那里的解决方案只适用于平面文档,而OP的解决方案适用于深树。这对我帮助很大

$this->dom->loadHTML($document,LIBXML\u HTML\u noimpled | LIBXML\u HTML\u NODEFDTD);
$xpath=new\DOMXPath($this->dom);
而($node_list=$xpath->query('/*[not(*)、not(@*)和not(text()[normalize-space()]))&&&$node_list->length){
foreach($node_列表为$node){
$node->parentNode->removeChild($node);
}
}

您应该能够在标记时使用domdocument。您是否有一些代码有问题?可能是重复的