开发者

PHP DOMDocument : how to select all links under a specific tag

I'm just getting started with using php DOMDocument and am having a little trouble. How would I select all link nodes under a specific node lets say

in jquery i could simply do.. $('h5 > a') and this would give me all the links under h5.

how would i do this in php using DOMDocument methods? I tried using phpquery but for some reason it can't read the html page i'm t开发者_StackOverflowrying to parse.


As far as I know, jQuery rewrites the selector queries to XPath. Any node jQuery can select, XPath also can.

h5 > a means select any a node for which the direct parent node is h5. This can easily be translated to a XPath query: //h5/a.

So, using DOMDocument:

$dom = new DOMDocument;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//h5/a');

foreach ($nodes as $node) {
   // do stuff
}


Retrieve the DOMElement whose children you are interested in and call DOMElement::getElementsByTagName on it.


Get all h5 tags from it, and loop through each one, checking if it's parent is an a tag.

// ...
$h5s = $document->getElementsByTagName('h5');
$correct_tags = array();
foreach ($h5s as $h5) {
    if ($h5->parentNode->tagName == 'a') {
        $correct_tags[] = $h5;
    }
}
// do something with $correct_tags
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜