2013-03-11 35 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