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

PHP DOM获取指定HTML中a标签的href与文本内容问题

修正PHP DOM获取指定标签的href与文本代码

目标HTML结构示例

<ul class="l1nk">
  <li><a href="https://sample.com/embed/2882015?ref=7Qc">ONLINE</a></li>
  <li><a href="https://sample.com/embed/12345?ref=abc">OFFLINE</a></li>
</ul>

正确的PHP DOM实现代码

<?php
// 替换为你的实际HTML内容(可通过file_get_contents或curl获取)
$html = '
<ul class="l1nk">
  <li><a href="https://sample.com/embed/2882015?ref=7Qc">ONLINE</a></li>
  <li><a href="https://sample.com/embed/12345?ref=abc">OFFLINE</a></li>
</ul>';

$dom = new DOMDocument();
// 忽略HTML格式不规范导致的警告
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();

// 用XPath精准定位目标节点
$xpath = new DOMXPath($dom);
// 匹配class为l1nk的ul下所有li中的a标签
$linkNodes = $xpath->query('//ul[@class="l1nk"]/li/a');

$linkData = [];
if ($linkNodes->length > 0) {
    foreach ($linkNodes as $node) {
        $linkData[] = [
            'href' => $node->getAttribute('href'),
            'text' => trim($node->nodeValue) // 去除文本前后空白
        ];
    }
}

// 输出结果示例
print_r($linkData);
?>

常见错误排查

  1. XPath语法错误:如果之前用了类似CSS选择器的.l1nk li a,XPath不支持这种写法,必须用//ul[@class="l1nk"]/li/a(若目标ul有多个class,可改用contains(@class, "l1nk"))
  2. 未处理不规范HTML:很多网页HTML格式不标准,必须加上libxml_use_internal_errors(true)避免DOM加载失败
  3. 节点遍历错误:直接遍历ul的子节点而非精准定位到,导致获取到无关节点
  4. 未清理文本空白:直接取nodeValue可能包含换行、空格,用trim()处理更干净

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:25