2013-03-11 45 views
0

我想使用PHP Curl和Xpath提取2個元素!期待在同一時間循環2元素(php/xpath)

到目前爲止,已在元素foreach分開,但我想有他們在同一時間:

@$dom->loadHTML($html); 
$xpath = new DOMXpath($dom); 
$elements = $xpath->evaluate("//p[@class='row']/a/@href"); 
//$elements = $xpath->query("//p[@class='row']/a"); 

foreach ($elements as $element) { 
    $url = $element->nodeValue; 
    //$title = $element->nodeValue;  
} 

當我echo每一個走出foreach的我只得到1元,並在其內迴盪foreach我得到他們所有人。

我的問題是我怎樣才能讓他們在同一時間(網址和標題)以及什麼是使用pdo將它們添加到myqsl中的最佳方式。

謝謝

回答

1

在這種情況下,不需要使用XPath兩次。您可以執行一個查詢並導航到關聯的其他節點。

例如,找到您感興趣的所有href,並獲取它們的ownerElement<a>)節點值。

$hrefs = $xpath->query("//p[@class='row']/a/@href"); 
foreach ($hrefs as $href) { 
    $url = $href->value; 
    $title = $href->ownerElement->nodeValue; 
    // Insert into db here 
} 

或者,發現所有的<a> s表示你有興趣,並得到他們href屬性。

$anchors = $xpath->query("//p[@class='row']/a[@href]"); 
foreach ($anchors as $anchor) { 
    $url = $anchor->getAttribute("href"); 
    $title = $anchor->nodeValue; 
    // Insert into db here 
} 
+0

工作得很好,非常感謝,能否給我提供一些參考資料,我可以在這裏擴展我的xpath知識!再次感謝 。 – user2158439 2013-03-11 21:06:21

+0

一個很好的起點是Schlitt的[XPath概述](http://schlitt.info/opensource/blog/0704_xpath.html)。 – salathe 2013-03-11 21:16:11

0

你在每次迭代覆蓋$url。也許使用數組?

@$dom->loadHTML($html); 
$xpath = new DOMXpath($dom); 
$elements = $xpath->evaluate("//p[@class='row']/a/@href"); 
//$elements = $xpath->query("//p[@class='row']/a"); 

$urls = array(); 

foreach ($elements as $element){ 
    array_push($urls, $element->nodeValue); 
    //$title = $element->nodeValue; 

} 
+0

它不工作!我想要做的是獲取相同的元素作爲查詢每個我放在我的代碼的標題和網址工作得很好,只是尋找一個簡單的方法來獲得兩個並將它們插入數據庫! – user2158439 2013-03-11 20:49:12