PHP DOMDocument:如何选择特定标记下的所有链接
问题描述:
我刚刚开始使用php DOMDocument,并且遇到了一些麻烦。 我怎么会选择一个特定节点下的所有链接节点可以说PHP DOMDocument:如何选择特定标记下的所有链接
jQuery中我可以简单地做.. $(“H5> A”) ,这会给我所有H5下的链接。
我将如何在PHP中使用DOMDocument方法做到这一点? 我尝试使用phpquery,但由于某些原因,它无法读取我试图解析的html页面。
答
据我所知,jQuery将选择器查询重写为XPath。任何节点jQuery都可以选择,XPath也可以。
h5 > a
表示选择直接父节点为h5
的任何a
节点。这可以轻松转换为XPath查询://h5/a
。
因此,使用DOM文档:
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//h5/a');
foreach ($nodes as $node) {
// do stuff
}
+0
工作很漂亮..非常感谢。 – guacamoly 2010-12-23 07:02:39
答
获取所有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
可能是有用的:http://simplehtmldom.sourceforge.net/ – yoda 2010-12-23 00:19:00