如何使用PHP从HTML页面中提取符合指定特征的特定链接
你的代码存在两个核心逻辑错误,导致无法提取到目标链接:
- 遍历a标签时提取的是
nodeValue(即a标签的可见文本内容),而非存储链接的href属性 - 所用正则仅匹配
http/https开头的绝对链接,但你需要的目标链接是/u/0/uc开头的相对路径,自然无法被正则命中
修正后的可运行代码如下:
<?php function dwnload($url) { $internalErrors = libxml_use_internal_errors(true); $dom = new DOMDocument(); @$dom->loadHTML(curl($url)); $vlink = ""; foreach ($dom->getElementsByTagName('a') as $a) { // 直接提取a标签href属性 $href = $a->getAttribute('href'); // 匹配目标链接特征 if (strpos($href, 'export=download') !== false) { $vlink = $href; // 找到目标后可提前终止遍历,不需要则删除本行 break; } } // 若需要转为绝对链接,可在此处拼接站点域名前缀,示例:$vlink = 'https://你的目标站点域名' . $vlink; // 恢复libxml错误配置 libxml_use_internal_errors($internalErrors); return $vlink; } ?>
- 如果你需要匹配多个符合条件的链接,删除代码中的
break,用数组存储所有匹配结果即可。
内容的提问来源于stack exchange,提问作者Dinesh chandra
相关产品推荐
相关产品推荐

