有没有办法在不使用正则表达式的情况下从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);
}
}
答案 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);
}
}