Копирование и удаление узла с PHP DOMDocument

0

У меня есть, казалось бы, уникальная ситуация, когда я хочу использовать DOMDocument для поиска узла на странице, сохранить его значение в переменной (рабочий), а затем удалить его из вывода. Я не могу понять, как удалить узел из вывода DOMDocument и сохранить его сначала.

Я могу сначала удалить узел полностью, что означает, что ничего не сохраняется в переменной, или я получаю сообщение "Not Found Error" при попытке удалить узел.

На странице есть только один узел (<h6>), который нужно удалить. Код, который я до сих пор (с ошибкой не найден), приведен ниже.

// Strip Everything Before and After Header Tags
$domdoc = new DOMDocument;
$docnew = new DOMDocument;

// Disable errors for <article> tag
libxml_use_internal_errors(true);
$domdoc->loadHTML(file_get_contents($file));
libxml_clear_errors();

$body = $domdoc->getElementsByTagName('body')->item(0);

foreach ($body->childNodes as $child){
    $docnew->appendChild($docnew->importNode($child, true));
}

// Get the Page Title
$ppretitle = $docnew->getElementsByTagName('h6')->item(0);
$pagetitle = $ppretitle->nodeValue;

// Remove Same Element From Output
$trunctitl = $docnew->removeChild($ppretitle);

// Save Cleaned Output In Var
$pagecontent = $docnew->saveHTML();
  • 1
    Можем ли мы увидеть пример HTML, который может воспроизвести проблему?
Теги:
domdocument

1 ответ

0

Элемент h6 может не быть прямым дочерним узлом элемента body: try $ppretitle->parentNode->removeChild($ppretitle) вместо $trunctitl = $docnew->removeChild($ppretitle);

  • 0
    Это сработало! Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню