php - 使用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 />";
}
需要提取子节点为图像标签的所有链接。
解决方案
您的 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的属性,该属性不会出现在链接中。
推荐阅读
- javascript - GTM Google Analytics 自定义维度变量仅在某些时候触发
- php - 当我从 php 中的查询生成器循环时出现错误
- go - Go Timer 停止时死锁
- json - 从 Flutter 中的 Json 错误解析 DateTime
- javascript - 根据 GPS 位置之间的距离过滤对象数组(javascript)
- sql - 巩固我的年和月以获得每个客户、每个月、每年的总数量的方法
- java - Kafka Streams KStream 转换
- vba - 有没有办法在 VBE 窗口处于活动状态时定义快捷键(例如 Ctrl-Y)来启动 VBA 子/宏?
- git - subtree-remote 的 git push 推送了整个 repo,如何撤消?
- android - “CameraDevice”不包含“CameraDirection”的定义