如何使用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
相关产品推荐
相关产品推荐

