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

PHP get_meta_tags函数处理无HTTP/HTTPS域名报错问题求助

解决get_meta_tags处理无前缀域名的报错问题

这个报错的原因很明确:get_meta_tags() 函数需要完整的带协议前缀(HTTP/HTTPS)的URL,如果只传纯域名(比如 www.drhugopavon.com/),它会误把这个路径当成本地文件去读取,自然就会抛出「找不到文件或目录」的警告。

我们可以写一个简单的辅助函数,自动为无前缀的URL添加上协议前缀——优先用更安全的HTTPS,如果HTTPS请求失败,再降级到HTTP。下面是修改后的完整代码:

// 自动为URL添加HTTP/HTTPS前缀的辅助函数
function add_protocol_prefix($url) {
    // 检查URL是否已经包含http/https前缀(不区分大小写)
    if (!preg_match('/^https?:\/\//i', $url)) {
        // 先尝试拼接HTTPS前缀,同时去掉开头多余的斜杠
        $https_url = 'https://' . ltrim($url, '/');
        // 验证HTTPS是否可正常访问
        $headers = @get_headers($https_url);
        if ($headers && strpos($headers[0], '200') !== false) {
            return $https_url;
        } else {
            // HTTPS不可访问则降级到HTTP
            return 'http://' . ltrim($url, '/');
        }
    }
    // 已经有协议前缀,直接返回原URL
    return $url;
}

$urls = array( 
    'https://www.smilesbycarroll.com/', 
    'https://hurstbournedentalcare.com/', 
    'https://www.dentalhc.com/', 
    'https://www.springhurstdentistry.com/', 
    'https://www.smilesbycarroll.com/', 
    'www.drhugopavon.com/' 
); 

foreach ($urls as $original_url) {
    // 先处理URL,确保带协议前缀
    $processed_url = add_protocol_prefix($original_url);
    
    // 抑制可能的警告,避免页面输出冗余错误信息
    $tags = @get_meta_tags($processed_url);
    
    if ($tags && isset($tags['viewport'])) {
        echo "$original_url (处理后:$processed_url) → viewport标签存在<br>";
    } else {
        echo "$original_url (处理后:$processed_url) → viewport标签不存在或URL无法访问<br>";
    }
}

代码细节说明:

  • add_protocol_prefix函数:
    • 用正则表达式快速判断URL是否已有协议前缀,避免重复添加。
    • 优先尝试HTTPS是因为现在绝大多数网站都支持HTTPS,安全性更高;如果HTTPS请求失败(比如老网站只支持HTTP),再自动降级。
    • 用ltrim($url, '/')处理URL开头的多余斜杠,避免出现https:////www.xxx.com这种格式错误的URL。
  • 主循环优化:
    • 保留原始URL用于展示,同时显示处理后的完整URL,方便你对比前后变化。
    • 在get_meta_tags前加@临时抑制警告(也可以用error_reporting()临时调整错误级别,不过@更简洁)。
    • 先判断$tags是否有效,避免URL无法访问时$tags为false导致后续判断报错。

这样修改后,不管传入的URL有没有协议前缀,都能正确调用get_meta_tags函数,不会再抛出找不到文件的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:22