2010-12-23 130 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 
相關問題