Правильное удаление дочерних элементов в PHP с помощью DOMDocument и DOMXPath

Это был предыдущий другой вопрос, но мы не будем говорить об этом. Я изолирую ряд разделов в стороннем HTML-документе. При сопоставлении некоторых мне нужно удалить определенные теги из результата. Код, который я нашел для этого на SO, был:

$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 только в разделе, который я нашел с помощью запроса.


person Community    schedule 18.11.2010    source источник


Ответы (1)


Вместо:

$xpath->query("//span", $name)

Do:

$xpath->query("span", $name)

//nodename соответствует всем узлам, независимо от их родителя. $contextnode игнорируется, если ваш запрос начинается с //.

person netcoder    schedule 18.11.2010
comment
Спасибо Спасибо спасибо. Теперь, если бы я только мог вернуть 6 часов своей жизни. :) - person ; 19.11.2010