Правильно удалять дочерние элементы в PHP, используя Domdocument и domxpath
-
26-09-2019 - |
Вопрос
Это был предыдущий другой вопрос, но мы не будем говорить об этом. Я изолирую ряд разделов в стороннем HTML-документе. При сопоставлении некоторых мне нужно удалить определенные теги из результата. Код, на котором я нашел для этого, так было:
$name = $xpath->query("//div[@class='leftColBig']//h3")->item(0);
// remove <span>
foreach($xpath->query("//span", $name) as $node)
$node->parentNode->removeChild($node);
Это несчастный побочный эффект не просто удаляя ребенка от $ name, но весь Domdocument :( Как я могу изолировать Removechild только к разделу, которое я нашел с помощью запроса.
Решение
Вместо:
$xpath->query("//span", $name)
Делать:
$xpath->query("span", $name)
//nodename
Соответствует всем узлам, независимо от того, что их родитель. $ contextnode игнорируется, когда ваш запрос начинается с //
.
Не связан с StackOverflow