2

これが私のコードです:

$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);

しかし、うまくいきません。何か案は ?

4

2 に答える 2

1

このremoveChildメソッドは、ノードから子要素を削除します。divをdocumentオブジェクトの子要素にすることはできず<html>、(HTMLドキュメント内で)のみ行うことができます。

削除するdivが見つかったら、その親ノードをフェッチする必要があります。次に、それを呼び出しますremoveChild

$divMeta->parentNode->removeChild($divMeta)
于 2012-10-18T12:51:52.730 に答える
1

次のコードが機能するはずです。

$divMeta = $doc->getElementById('meta');
$divMeta->parentNode->removeChild($divMeta);
于 2012-10-18T12:51:44.207 に答える