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

如何在CodeIgniter中获取Chrome浏览器的精确版本

解决CodeIgniter获取Chrome精确版本的问题

CodeIgniter自带的User_agent库对Chrome版本的解析做了截断处理,导致只能拿到x.x.0.0格式的版本号。可以通过以下两种方式解决:

方法一:直接解析原始User-Agent字符串

绕过User_agent库的version()方法,直接从完整的User-Agent字符串中用正则提取精确版本:

$this->load->library('user_agent');
// 获取完整的User-Agent字符串
$user_agent_str = $this->agent->agent_string();
// 正则匹配Chrome的完整版本号
preg_match('/Chrome\/(\d+\.\d+\.\d+\.\d+)/', $user_agent_str, $matches);
// 优先用匹配到的精确版本,匹配失败则 fallback 到原方法的结果
$exact_version = isset($matches[1]) ? $matches[1] : $this->agent->version();

方法二:扩展User_agent库(持久化修改)

为了避免每次重复写正则,可以通过自定义扩展类重写浏览器版本解析逻辑:

  1. 在application/libraries目录下创建MY_User_agent.php文件
  2. 继承CI_User_agent类,重写_browser()方法中关于Chrome的解析部分:
class MY_User_agent extends CI_User_agent {
    protected function _browser() {
        parent::_browser();
        
        // 重新解析Chrome版本
        $agent = $this->agent_string();
        if (preg_match('/Chrome\/(\d+\.\d+\.\d+\.\d+)/', $agent, $match)) {
            $this->browser = 'Chrome';
            $this->version = $match[1];
        }
        
        return $this->browser;
    }
}

之后正常加载User_agent库时,会自动使用扩展后的类,调用$this->agent->version()就能拿到精确版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:57:09