Excluindo corretamente os elementos da criança no PHP usando DomDocument e DomxPath
-
26-09-2019 - |
Pergunta
Essa foi outra pergunta anterior, mas não falaremos sobre isso. Estou isolando várias seções em um documento HTML de terceiros. Ao combinar alguns, preciso remover determinadas tags do resultado. O código que encontrei para isso foi assim:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
Isso tem o efeito colateral infeliz de não apenas excluir a criança do $ Name, mas todo o DomDocument :( Como posso isolar o removechild apenas na seção que encontrei usando a consulta.
Solução
Ao invés de:
$xpath->query("//span", $name)
Fazer:
$xpath->query("span", $name)
//nodename
Corresponde a todos os nós, não importa o que seja seus pais. $ contextNode é ignorado quando sua consulta começa com //
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow