Löschen korrekt untergeordneten Elemente in PHP DOMDocument und DOMXPath
-
26-09-2019 - |
Frage
Dies war vorherige eine andere Frage, aber wir werden nicht darüber reden. Ich bin eine Reihe von Abschnitten in einem Dritten HTML-Dokument zu isolieren. Wenn einige passende, muss ich bestimmte Tags aus dem Ergebnis entfernen. Der Code, den ich für diese auf SO gefunden wurde:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
Dies hat die unglückliche Nebenwirkung nicht nur das Kind von $ namen zu löschen, sondern die gesamte DOMDocument :( Wie kann ich isoliere die removeChild nur auf den Abschnitt I mit der Abfrage gefunden.
Lösung
Statt:
$xpath->query("//span", $name)
Sie:
$xpath->query("span", $name)
//nodename
entspricht alle Knoten, egal, was ihre Eltern sind. $ ContextNode wird ignoriert, wenn Ihre Abfrage beginnt mit //
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow