且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

PHP DOMDocument:按类删除元素

更新时间:2023-11-18 15:06:28

您需要使用 removeChild()方法:

$xpath = new DOMXPath($dom);
foreach($xpath->query('//div[contains(attribute::class, "foo")]') as $e ) {
    // Delete this node
    $e->parentNode->removeChild($e);
}

Btw,关于第二个问题,如果没有找到元素,则循环

Btw, about your second question, if there are no elements found, the loop won't iterate at all.

以下是一个有效的示例:

Here comes a working example:

$html = <<<EOF
<div class="main">
    <div class="delete_this" contenteditable="true">Target</div>
    <div class="class1"></div>
    <div class="content"><p>Anything</p></div>
</div>
EOF;

$doc = new DOMDocument();
$doc->loadHTML($html);

$selector = new DOMXPath($doc);
foreach($selector->query('//div[contains(attribute::class, "delete_this")]') as $e ) {
    $e->parentNode->removeChild($e);
}

echo $doc->saveHTML($doc->documentElement);