Правильно удалять дочерние элементы в PHP, используя Domdocument и domxpath

StackOverflow https://stackoverflow.com/questions/4218308

Вопрос

Это был предыдущий другой вопрос, но мы не будем говорить об этом. Я изолирую ряд разделов в стороннем 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 игнорируется, когда ваш запрос начинается с //.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top