0

我正在尝试使用 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;    
}

当我echo每个人foreach都只得到一个元素时,当它在里面回响时,foreach我得到了所有的元素。

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

谢谢你

4

2 回答 2

1

在这种情况下,不需要使用 XPath 两次。您可以执行一个查询并导航到关联的其他节点。

For example, find all of the hrefs that you are interested in and get their ownerElement's (the <a>) node value.

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

Or, find all of the <a>s that you are interested in and get their href attributes.

$anchors = $xpath->query("//p[@class='row']/a[@href]");
foreach ($anchors as $anchor) {
    $url = $anchor->getAttribute("href");
    $title = $anchor->nodeValue;
    // Insert into db here
}
于 2013-03-11T20:58:51.190 回答
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;

}
于 2013-03-11T20:45:00.077 回答