【问题标题】:Remove all empty html elements using PHP: DOMDocument使用 PHP 删除所有空的 html 元素:DOMDocument
【发布时间】:2016-11-01 19:13:18
【问题描述】:

有什么方法可以在不使用正则表达式的情况下从 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);
    }
}

【问题讨论】:

标签: php domdocument


【解决方案1】:

由于可能很不清楚,作者已经回答了这个问题(通过编辑帖子),我无法评论要求适当的问题结束,复制与实际答案相同的代码。
一件重要的事情:cmets 指的是另一个主题,但那里的解决方案适用于平面文档,而 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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多