Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP DOMDocument removeChild()仅删除目标类的第一个实例_Php_Domdocument_Removechild - Fatal编程技术网

PHP DOMDocument removeChild()仅删除目标类的第一个实例

PHP DOMDocument removeChild()仅删除目标类的第一个实例,php,domdocument,removechild,Php,Domdocument,Removechild,我需要从HTML文档中删除特定类(仅分配给divs)的所有实例。下面是我正在使用的代码片段: $dom = new DOMDocument; $dom->loadHTML($meaning); foreach ($dom->getElementsByTagName('div') as $node) { if($node->getAttribute('class') == "someclass"){ $node->parent

我需要从HTML文档中删除特定类(仅分配给
div
s)的所有实例。下面是我正在使用的代码片段:

$dom = new DOMDocument;
    $dom->loadHTML($meaning);
foreach ($dom->getElementsByTagName('div') as $node) {
        if($node->getAttribute('class') == "someclass"){
            $node->parentNode->removeChild($node);
        }
    }

除了只删除所述类的第一次出现,而将其余的保留在后面之外,这一切都很好。这是正常的行为吗?我应该在代码中修改什么以确保删除所有属于此类的节点?

试一试。关键是要使用
DomNodeList::item()
,如下所示:

$dom = new DOMDocument();
$dom->loadHTML($meaning);

/** @var DomNodeList $divs */
$divs = $dom->getElementsByTagName('div');

for ($i = 0; $i < $divs->length; $i++) {
    /** @var DomElement $node */
    $node = $divs->item($i);
    if ($node->getAttribute('class') == 'someclass') {
        $node->parentNode->removeChild($node);
        $i--; // Since we just removed an element, we need to readjust our pointer.
    }
}
$dom=newdomdocument();
$dom->loadHTML($means);
/**@var DomNodeList$divs*/
$divs=$dom->getElementsByTagName('div');
对于($i=0;$i<$divs->length;$i++){
/**@var DomElement$node*/
$node=$divs->item($i);
如果($node->getAttribute('class')=='someclass'){
$node->parentNode->removeChild($node);
$i--;//因为我们刚刚删除了一个元素,所以需要重新调整指针。
}
}