You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XPath提取含PRODUCT_LEAD字符串的img标签src属性值问题

问题原因
  • XPath查询的节点错误:你写的//*[@class="slide__image"]匹配的是<div class="slide__image">容器节点,不是它的子元素img标签,div本身没有src属性,调用getAttribute('src')必然返回空值。
  • 变量覆盖问题:你的$imgurl在循环中每次被重新赋值,就算逻辑正确最终也只会保留最后一个节点的属性值,而代码里最后一个slide的img src刚好不含PRODUCT_LEAD,所以最终输出为空。
解决方法

推荐直接优化XPath语句,一步查询到符合要求的img节点,无需额外循环过滤,代码更高效:

$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->strictErrorChecking = false;
$doc->recover = true;

libxml_use_internal_errors(true);
$doc->loadHTML($pageBody);
$xpath = new \DOMXPath($doc);
// 直接定位slide__image下、src包含PRODUCT_LEAD的img节点
$targetImgs = $xpath->query('//div[@class="slide__image"]/img[contains(@src, "PRODUCT_LEAD")]');

$imgUrls = [];
foreach ($targetImgs as $img) {
    $imgUrls[] = $img->getAttribute('src');
    // 如果需要高清大图,可以取data-zoom-image属性:$img->getAttribute('data-zoom-image')
}

dd($imgUrls);

如果只需要第一个匹配的链接,无需循环,直接取值即可:

$firstLeadImg = $targetImgs->item(0)?->getAttribute('src');
dd($firstLeadImg);

内容的提问来源于stack exchange,提问作者Devin Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:09:04