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

如何使用Simple HTML Dom提取不含hdo.to域名的链接?

如何用Simple HTML Dom提取不带域名的URL路径

嘿,我来帮你搞定这个问题!你当前的代码输出完整<a>标签,是因为直接把Simple HTML Dom的元素对象赋值给数组并输出了。要获取像/country/china这样的路径,我们需要先拿到href属性值,再提取其中的路径部分。

这里有两种可靠的方法:

方法一:用parse_url提取路径(推荐)

parse_url是PHP内置函数,可以轻松从完整URL中拆分出各个部分,其中PHP_URL_PATH参数会直接返回域名后的路径,通用性很强:

<?php
include('simple_html_dom.php');
$url = 'https://hdo.to/';
$html = file_get_html($url);
$links = []; // 先初始化存储路径的数组

foreach($html->find('a[href^="https://hdo.to/country/"]') as $klk) {
    // 从完整href中提取路径部分
    $countryPath = parse_url($klk->href, PHP_URL_PATH);
    $links[] = $countryPath;
    echo $countryPath . '<br>'; // 输出单个路径,也可以后续统一处理数组
}

// 若需要查看所有路径数组,可取消下面的注释
// print_r($links);
?>

方法二:字符串替换(适合固定域名的场景)

如果确定目标域名不会变化,也可以直接用str_replace把域名部分替换为空:

<?php
include('simple_html_dom.php');
$url = 'https://hdo.to/';
$html = file_get_html($url);
$links = [];

foreach($html->find('a[href^="https://hdo.to/country/"]') as $klk) {
    $countryPath = str_replace('https://hdo.to', '', $klk->href);
    $links[] = $countryPath;
    echo $countryPath . '<br>';
}
?>

关键说明

  • 一定要用$klk->href获取<a>标签的href属性值,而不是直接输出$klk(后者是整个元素对象,会渲染成完整的HTML标签)。
  • parse_url方法更推荐,因为即使后续域名有变更,代码也不需要修改,适应性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:27:16