首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP DOMXPATH & Array

PHP DOMXPATH & Array
EN

Stack Overflow用户
提问于 2010-08-23 09:44:38
回答 1查看 1K关注 0票数 0

我正在尝试从页面中提取所有相关的URL和图像,并将它们放入一个数组中,下面的代码运行良好,只是它一遍又一遍地输出第一个URL和图像对的次数是正确的。我认为我在指定XPATH时可能犯了错误,但我已经在3个不同的站点上进行了测试,每次都有相同的结果。

代码语言:javascript
复制
$dom = new DOMDocument();
$dom->loadHtml( $html );
$xpath = new DOMXPath( $dom );

$items = $xpath->query( "//div[@class=\"row\"]" );

foreach ( $items as $item ) {

$value['url'] = $xpath->query( "//div[@class=\"productImg\"]/a/@href",$item)->item(0)->nodeValue;

$value['img'] = $xpath->query("//div[@class=\"productImg\"]/a/img/@src",$item)->item(0)->nodeValue;

$result[] = $value;


}

print_r($result);

很明显,代码是不正确的,但我无法将其范围缩小到有问题的部分。在有人建议使用正则表达式之前,这是我通常会做的事情,但如果可能,我现在更喜欢使用XPATH。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-24 03:40:27

给定query("//div[@class=\"productImg\"]/a/img/@src",$item),看起来您想要执行一个与$item相关的查询。你已经很接近了,只是还不够。

查询以//div开始,这意味着要查找作为文档根目录的后代的任何<div>节点,并满足查询的其余部分。正如前面提到的,关键之处在于该表达式来自文档根目录。

为了选择上下文节点,您应该以.开头表达式,以便.//div将匹配上下文节点的任何后代<div>节点(即您的$item)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3544241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档