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

Laravel5.2中使用hisorange/browser-detect检测Microsoft Edge失败的问题

解决Laravel 5.2中hisorange/browser-detect无法检测Microsoft Edge的问题

我之前在Laravel 5.2项目里用这个包时也踩过同样的坑——原本以为Browser::isIE()能同时覆盖IE和Edge,但实际发现它只识别传统的Internet Explorer,完全忽略Edge。这主要是因为Edge的用户代理(UA)字符串和IE有明显区别,早期版本的hisorange/browser-detect没把Edge纳入isIE()的检测逻辑里。

给你几个可行的解决方案:

  • 直接使用包的浏览器名称检测
    这个包其实自带了获取浏览器名称的方法,你可以直接判断是否为Edge:

    if (Browser::browserName() === 'Edge') {
        // 这里处理Edge浏览器的逻辑
    }
    

    注意:如果是基于Chromium的新版Edge,UA里会显示Edg/,部分包版本可能会把它识别为Edge,如果遇到识别问题,可以结合UA字符串二次验证。

  • 自定义Edge检测函数
    如果你需要更灵活的检测方式,可以自己写一个辅助函数来判断UA里的Edge标识:

    function isMicrosoftEdge() {
        $userAgent = request()->header('User-Agent');
        // 兼容旧版Edge(Edge/)和新版Chromium Edge(Edg/)
        return str_contains($userAgent, 'Edge/') || str_contains($userAgent, 'Edg/');
    }
    
    // 使用示例
    if (isMicrosoftEdge()) {
        // Edge浏览器逻辑
    }
    
  • 尝试更新包版本(注意兼容性)
    Laravel 5.2比较老旧,对应的hisorange/browser-detect版本可能也比较旧,你可以查看包的版本历史,找一个兼容Laravel 5.2且支持Edge检测的版本更新:
    修改composer.json里的包版本后,执行:

    composer update hisorange/browser-detect
    

    不过更新前一定要测试,避免版本不兼容导致项目报错。

  • 直接通过UA字符串判断
    最直接的方式就是读取服务器的UA变量来检测:

    $ua = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($ua, 'Edge/') !== false || strpos($ua, 'Edg/') !== false) {
        // 处理Edge浏览器
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:34