У меня есть, казалось бы, уникальная ситуация, когда я хочу использовать 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();
Элемент h6
может не быть прямым дочерним узлом элемента body
: try $ppretitle->parentNode->removeChild($ppretitle)
вместо $trunctitl = $docnew->removeChild($ppretitle);