PHP DOMDocument:如何选择特定标记下的所有链接

时间:2010-12-23 00:16:08

标签: php domdocument

我刚刚开始使用php DOMDocument并且遇到了一些麻烦。 如何选择特定节点下的所有链接节点,请说

在jquery我可以简单地做.. $('h5> a') 这会给我h5下的所有链接。

我如何使用DOMDocument方法在php中执行此操作? 我尝试使用phpquery但由于某种原因它无法读取我想要解析的html页面。

3 个答案:

答案 0 :(得分:1)

检索您感兴趣的孩子的DOMElement,然后点击DOMElement::getElementsByTagName

答案 1 :(得分:1)

据我所知,jQuery将选择器查询重写为XPath。任何节点jQuery都可以选择,XPath也可以。

h5 > a表示选择直接父节点为a的任何h5节点。这可以很容易地转换为XPath查询://h5/a

所以,使用DOMDocument:

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

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

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

答案 2 :(得分:1)

从中获取所有h5个标记,并遍历每个标记,检查其父标记是否为a标记。

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