Autor Zpráva
Timy
Profil
Používám PHP: DOM a nevím jak docílit toho, abych z HTML stránky odstranil určitý uzel. Mám tento kód:

private function removeHTML($xpath)
{
	$dom = new DOMDocument();
	$dom->loadHTML($this->HTML);
	
	$xpathObject = new DOMXPath($dom);
	$nod = $xpathObject->query($xpath)->item(0);
	
	$dom->removeChild($nod);
}


Při každé aplikaci mi to vyhodí následující chybu:

Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in C:\xampp\htdocs\webreader\WebSegment.php:126 Stack trace: #0 C:\xampp\htdocs\webreader\WebSegment.php(126): DOMNode->removeChild(Object(DOMElement)) #1 C:\xampp\htdocs\webreader\WebSegment.php(26): WebSegment->removeHTML('//h1') #2 C:\xampp\htdocs\webreader\index.php(28):

Přičemž ten element $nod je nalezený v pořádku, když si ho třeba nechám vypsat, tak to žádnou chybu neháže, chybu to hodí až při aplikaci removeChild(). Používám to nějak špatně nebo kde je prosím chyba?
Chamurappi
Profil
Reaguji na Timyho:
Jestli ten DOM funguje stejně jako v JS, tak removeChild můžeš volat jen z rodiče uzlu, který chceš odstranit. Takže asi nějak takhle:
    $nod->parentNode->dom->removeChild($nod);
Timy
Profil
Chamurappi
Funguje, díky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: