PHP的DomDocument:如何删除一个div?(PHP DomDocument : How r

2019-09-24 06:19发布

这里是我的代码:

$doc = new DOMDocument();
$doc->loadHTML(stripslashes($sContent));

// si le meta existe alors il y a un sondage
if($doc->getElementById('meta') != null){
    $nombreMeta = $doc->getElementById('meta')->nodeValue;
    $numSondage = $doc->getElementById('meta')->getAttribute('class');
    for($i=0;$i<$nombreMeta;$i++){
        $meta = $meta."0,";
    }
    $meta = substr($meta,0,-1); 
    $divMeta = $doc->getElementById('meta');
    $oldchapter = $doc->removeChild($divMeta);
    $oHead = $doc->getElementsByTagName('head')->item(0);
    $oMeta2 = $doc->createElement('meta');
    $oMeta2->setAttribute('name',"metapoll".$numSondage);
    $oMeta2->setAttribute('content',$meta);
    $oHead->insertBefore($oMeta2, $oHead->firstChild);
    $sContent = $doc->saveHTML();
}

我试图删除与DIV id="meta" ($doc->getElementById('meta'))但我不知道为什么它不工作。

我测试了很多东西,如:

$metmet = $doc->documentElement;
$divMeta = $metmet->getElementById('meta')->item(0);
$metmet->removeChild($divMeta);

但是,这是行不通的。 有任何想法吗 ?

Answer 1:

removeChild方法删除来自节点的子元素。 一个DIV不能是的子元素document对象,只<html>可以是(在HTML文档中)。

在找到你要删除的DIV,你需要获取它的父节点。 然后调用removeChild对。

$divMeta->parentNode->removeChild($divMeta)


Answer 2:

下面的代码应该工作:

$divMeta = $doc->getElementById('meta');
$divMeta->parentNode->removeChild($divMeta);
  • removeChild
  • parentNode


文章来源: PHP DomDocument : How remove a div?