首页 > 解决方案 > 使用php提取所有'img'标签所在的'a'标签,但我无法弄清楚

问题描述

这是正在使用的代码片段:

$urlContent = file_get_contents('http://www.techeblog.com/');
$dom = new DOMDocument();
@$dom->loadHTML($urlContent);
$domPath=new DOMXpath($dom);
$linkList = $domPath->evaluate("/html/body/a/img");
foreach ($linkList as $link) 

  {

        echo $link->getAttribute("src")."<br />";   

  }

需要提取子节点为图像标签的所有链接。

标签: php

解决方案


您的 XPath 表达式将只返回链接内的图像标记,这些链接是 body 标记的直接子级。如果您想要文档中任何位置包含图像的所有链接标签,请使用表达式 //a[img]

话虽如此,您可能希望更具体地了解您提取的图像。此表达式会将结果限制为包含博客条目//div[@class="entry"]//a[img] 内的图像的链接。

这是一个很棒的XPath 备忘单

<?php

$urlContent = file_get_contents('http://www.techeblog.com/');

$dom = new DOMDocument();

@$dom->loadHTML($urlContent);

$domPath=new DOMXpath($dom);

$linkList = $domPath->evaluate('//div[@class="entry"]//a[img]');

foreach ($linkList as $link)
{
    echo $link->getAttribute("href").PHP_EOL;
}

此外,您的回声正在寻找一个名为src的属性,该属性不会出现在链接中。


推荐阅读