Correttamente l'eliminazione di elementi figlio in PHP utilizzando DOMDocument e DOMXPath
-
26-09-2019 - |
Domanda
Questa è stata un'altra domanda precedente, ma non vogliamo parlare di questo. Sto isolare un numero di sezioni in un documento HTML di terze parti. Quando corrispondenza alcuni, ho bisogno di rimuovere alcuni tag dal risultato. Il codice che ho trovato per questo su SO è stato:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
Questo ha l'effetto collaterale di non solo l'eliminazione del bambino da $ nome, ma l'intero DOMDocument :( Come posso isolare l'removeChild solo per la sezione che ho trovato utilizzando la query.
Soluzione
Al posto di:
$xpath->query("//span", $name)
Do:
$xpath->query("span", $name)
//nodename
corrisponde a tutti i nodi, non importa quale sia il loro padre è. $ Contextnode viene ignorato quando la query inizia con //
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow