5

DOMオブジェクトでページを繰り返し処理していて、ある時点でスタックしました。

これが私が反復しなければならないサンプルHTMLコードです。

...
<div class="some_class">
some Text Some Text
<div class="childDiv">
</div>
<div class="childDiv">
</div>
<div class="childDiv">
</div>
<div class="childDiv">
</div>
</div>
...

さて、これが部分的なコードです。

$dom->loadHTML("content above");

// I want only first level child of this element.
$divs = $dom->childNodes;
foreach ($divs as $div)
{
    // here the problem starts - the first node encountered is DomTEXT
    // so how am i supposed to skip that and move to the other node.

    $childDiv = $div->getElementsByTagName('div');
}

ご覧のとおり、..$childNodesが戻るDOMNodeListと、それを繰り返し処理します。foreachいつでもaDOMTextに遭遇した場合、それをスキップすることはできません。

DOMTextとのリソースタイプを区別する条件を設定できる方法を教えてくださいDOMElement

4

1 に答える 1

9
foreach($divs as $div){

    if( $div->nodeType !== 1 ) { //Element nodes are of nodeType 1. Text 3. Comments 8. etc rtm
        continue;
    }

    $childDiv = $div->getElementsByTagName('div');
}
于 2012-07-04T14:03:40.757 に答える