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

如何使用PHP获取网页头部的所有link标签?

如何用PHP获取网页头部的所有link标签

PHP并没有提供类似get_meta_tags()的内置函数来直接抓取网页头部的link标签,不过我们可以利用原生的DOM解析工具来实现这个需求,下面是两种可靠的实现方式:

方法一:使用DOMDocument原生解析(推荐)

这种方法不需要依赖第三方库,兼容性好,适合处理大多数网页(即使HTML不规范)。

完整代码示例

function get_link_tags($url) {
    // 用CURL获取网页内容,比file_get_contents更稳定,支持重定向和HTTPS
    $ch = curl_init($url);
    // 设置CURL选项
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
    // 生产环境建议开启SSL验证,并指定CA证书路径
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $html = curl_exec($ch);
    curl_close($ch);

    if (!$html) {
        return [];
    }

    // 初始化DOMDocument,抑制解析不规范HTML的警告
    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    // 处理编码问题,确保中文等字符正常解析
    $dom->loadHTML('<?xml encoding="UTF-8">' . $html);
    libxml_clear_errors();

    $linkTags = [];
    // 获取所有link标签
    $links = $dom->getElementsByTagName('link');

    // 遍历每个link标签,提取所有属性
    foreach ($links as $link) {
        $attrCollection = [];
        foreach ($link->attributes as $attr) {
            $attrCollection[$attr->name] = $attr->value;
        }
        $linkTags[] = $attrCollection;
    }

    return $linkTags;
}

// 使用示例
$targetUrl = 'https://example.com';
$allLinks = get_link_tags($targetUrl);

// 打印结果
print_r($allLinks);

代码说明

  1. CURL获取内容:相比file_get_contents,CURL支持重定向、自定义请求头,能应对更多网站的反爬策略;
  2. DOMDocument处理:通过libxml_use_internal_errors(true)抑制不规范HTML的解析警告,避免输出冗余信息;
  3. 属性提取:遍历每个link标签的所有属性,把属性名和值整理成数组,方便后续使用。

方法二:用XPath精准筛选

如果需要只抓取特定类型的link标签(比如rel="stylesheet"的样式表链接),可以用XPath来精准定位:

// 在上面的函数中,替换获取links的代码段为:
$xpath = new DOMXPath($dom);
// 只抓取带有rel属性的link标签
$links = $xpath->query('//link[@rel]');
// 或者只抓取样式表链接
// $links = $xpath->query('//link[@rel="stylesheet"]');

注意事项

  • 生产环境中,建议开启CURL的SSL验证,并指定合法的CA证书路径,避免安全风险;
  • 如果目标网站有反爬机制,可以添加更多请求头(比如Referer)来模拟正常浏览器请求;
  • 部分网站可能返回压缩后的内容,需要在CURL中添加CURLOPT_ENCODING, 'gzip'来自动解压。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:17