我剛剛開始使用php DOMDocument,並且遇到了一些麻煩。 我怎麼會選擇一個特定節點下的所有鏈接節點可以說PHP DOMDocument:如何選擇特定標記下的所有鏈接
jQuery中我可以簡單地做.. $(「H5> A」) ,這會給我所有H5下的鏈接。
我將如何在PHP中使用DOMDocument方法做到這一點? 我嘗試使用phpquery,但由於某些原因,它無法讀取我試圖解析的html頁面。
我剛剛開始使用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
}
工作很漂亮..非常感謝。 – guacamoly 2010-12-23 07:02:39
檢索您感興趣的子女的DOMElement並在其上打電話DOMElement::getElementsByTagName。
獲取所有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