我刚刚开始使用php DOMDocument并且遇到了一些麻烦。 如何选择特定节点下的所有链接节点,请说
在jquery我可以简单地做.. $('h5> a') 这会给我h5下的所有链接。
我如何使用DOMDocument方法在php中执行此操作? 我尝试使用phpquery但由于某种原因它无法读取我想要解析的html页面。
答案 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