Правилно изтриване на дъщерни елементи в 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