2010-12-23 131 views
1

我刚刚开始使用php DOMDocument,并且遇到了一些麻烦。 我怎么会选择一个特定节点下的所有链接节点可以说PHP DOMDocument:如何选择特定标记下的所有链接

jQuery中我可以简单地做.. $(“H5> A”) ,这会给我所有H5下的链接。

我将如何在PHP中使用DOMDocument方法做到这一点? 我尝试使用phpquery,但由于某些原因,它无法读取我试图解析的html页面。

+0

可能是有用的:http://simplehtmldom.sourceforge.net/ – yoda 2010-12-23 00:19:00

回答

1

据我所知,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

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 
相关问题