在同一时间查找2个元素的循环(php /xpath)


looking to loop for 2 element in the same time (php /xpath )

我正在尝试使用PHP Curl和Xpath提取2个元素!

到目前为止,元素在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;    
}

当我把foreach中的每一个都echo时,我只得到一个元素,当它在foreach中回响时,我得到所有的元素。

我的问题是如何同时获得它们(url和title)以及使用pdo将它们添加到myqsl中的最佳方法。

thank you

在本例中不需要两次使用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>,并获得它们的href属性。

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

每次迭代都覆盖$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;
}