PHP DOMDocument: как удалить div?

Вот мой код:

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

Но это не работает. Любые идеи ?


person KassaK    schedule 18.10.2012    source источник
comment
Вы также должны опубликовать свой HTML-код. Мое первое предположение состоит в том, что у вас нет тега с идентификатором мета, но у вас есть метатеги в вашей ‹голове›. Я прав?   -  person Dominic Goulet    schedule 18.10.2012
comment
возможный дубликат Как удалить элемент HTML с помощью DOMDocument класс   -  person hakre    schedule 07.03.2013


Ответы (2)


Метод removeChild удаляет дочерний элемент из узла. Div не может быть дочерним элементом объекта document, может быть только <html> (в HTML-документе).

Найдя div, который вы хотите удалить, вам нужно получить его родительский узел. Затем позвоните removeChild по этому поводу.

$divMeta->parentNode->removeChild($divMeta)
person Quentin    schedule 18.10.2012

Следующий код должен работать:

$divMeta = $doc->getElementById('meta');
$divMeta->parentNode->removeChild($divMeta);
person lonesomeday    schedule 18.10.2012