用PHP写了获取客户端系统和游览器类型,版本号的接口,望大神指点

专业填坑 发布于 2016/01/21 17:37
阅读 1K+
收藏 1
PHP
/**
     * 获取客户端游览器
     * @params $ua  User-Agent
     * @author haha 2016-01-21
     */
    public static function getClientBroswer($ua = '') {

        $ua or $ua = $_SERVER['HTTP_USER_AGENT'];

        //微信打开
        if (stripos($ua, 'MicroMessenger')) {
            preg_match('/MicroMessenger\/([\d\.]+)/i', $ua, $match);
            return 'Wechat '. $match[1];
        }

        //获取火狐浏览器的版本号
        if (stripos($ua, 'Firefox/')) {
            preg_match('/Firefox\/([^;)]+)/i', $ua, $match);
            $exp[0] = 'Firefox';
            $exp[1] = $match[1];
        }
        //360游览器
        else if(stripos($ua,'360SE')) {
            $exp[0] = '360游览器';
            $exp[1] = '';
        }
        //搜狗游览器
        else if(stripos($ua, 'SE') && stripos($ua, 'MetaSr')) {
            preg_match('/SE\s([\w\.]+)/i', $ua, $match);
            $exp[0] = '搜狗';
            $exp[1] = $match[1];
        }
        //获取google chrome的版本号
        else if (stripos($ua, 'Chrome')) {
            preg_match('/Chrome\/([\d\.]+)/', $ua, $match);
            $exp[0] = 'Chrome';
            $exp[1] = $match[1];
        }
        //遨游游览器
        elseif (stripos($ua, 'Maxthon')) {
            preg_match('/Maxthon([\s\d\.]+)/', $ua, $match);
            $exp[0] = '傲游';
            $exp[1] = $match[1];
        }
        //欧朋游览器
        elseif (stripos($ua, 'opera')) {
            preg_match('/opera\/([\d\.\/]+)/', $ua, $match);
            $exp[0] = 'Opera';
            $exp[1] = $match[1];
        }
        //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
        else if(stripos($ua, 'Edge')) {
            preg_match('/Edge\/([\d\.]+)/', $ua, $match);
            $exp[0] = 'Edge';
            $exp[1] = $match[1];
        }
        //UC游览器
        else if(stripos($ua,'UCBrowser')) {
            preg_match('/UCBrowser\/([\d\.]+)/', $ua, $match);
            $exp[0] = 'UCBrowser ';
            $exp[1] = $match[1];
        }
        //QQ游览器(note:移动端没有检测版本号)
        else if(stripos($ua,'TencentTraveler') || stripos($ua,'QQBrowser')) {
            preg_match('/TencentTraveler\s([\d\.]+)/', $ua, $match);
            $exp[0] = 'QQ游览器';
            $exp[1] = $match[1];
        }
        //百度游览器
        else if(stripos($ua,'baidubrowser')) {
            preg_match('/baidubrowser\/([\d\.]+)/', $ua, $match);
            $exp[0] = '百度游览器';
            $exp[1] = $match[1];
        }
        //IE11
        else if(stripos($ua,'rv:')) {
            preg_match('/rv:([\d\.]+)/', $ua, $match);
            $exp[0] = 'IE';
            $exp[1] = $match[1];
        }
        //移动设备的IE游览器
        else if(stripos($ua, 'IEMobile')) {
            preg_match('/IEMobile\/([\d\.]+)+/i', $ua, $match);
            $exp[0] = 'IE';
            $exp[1] = $match[1];
        }
        //获取IE的版本号
        else if (stripos($ua, 'MSIE')) {
            preg_match('/MSIE\s+([^;)]+)+/i', $ua, $match);
            $exp[0] = 'IE';
            $exp[1] = $match[1];
        }
        else {
            $exp[0] = '未知浏览器';
            $exp[1] = '';
        }
        return implode(' ',$exp);
    }


/**
     * 获取客户端OS
     * @params $ua  User-Agent
     * @author haha 2016-01-21
     */
    public static function getClientOS($ua = '')
    {
        $ua or $ua = $_SERVER['HTTP_USER_AGENT'];

        //window系统
        if (stripos($ua, 'window')) {
            $os = 'Windows';
            if (preg_match('/nt 6.0/i', $ua)) {
                $os .= ' Vista';
            } else if (preg_match('/nt 6.1/i', $ua)) {
                $os .= ' 7';
            } else if (preg_match('/nt 6.2/i', $ua)) {
                $os .= ' 8';
            } else if (preg_match('/nt 10.0/i', $ua)) {
                $os .= ' 10';
            } else if (preg_match('/nt 5.1/i', $ua)) {
                $os .= ' XP';
            } else {
                //其他window操作系统
            }
        }
        else if (stripos($ua, 'android')) {
            preg_match('/android\s([\d\.]+)/i', $ua, $match);
            $os = 'Android ';
            $os .= $match[1];
        }
        else if(preg_match('/iPhone|iPad|iPod/i',$ua)) {
            preg_match('/OS\s([0-9_\.]+)/i', $ua, $match);
            $os = 'IOS ';
            $os .= str_replace('_','.',$match[1]);
        }
        else if (stripos($ua, 'mac os')) {
            preg_match('/Mac OS X\s([0-9_\.]+)/i', $ua, $match);
            $os = 'Mac OS X ';
            $os .= str_replace('_','.',$match[1]);
        }
        else if (stripos($ua, 'unix')) {
            $os = 'Unix';
        }
        else if (stripos($ua, 'linux')) {
            $os = 'Linux';
        }
        else {
            $os = 'Other';
        }
        return $os;
    }




加载中
1
亭舸翁
亭舸翁
看看这个https://github.com/tobie/ua-parser
专业填坑
专业填坑
这个给力 谢谢啦
0
Broly
Broly
函数写的挺好的,有什么问题吗?
0
梦想岛
梦想岛
360搞不到滴。。
0
OSC首席键客
OSC首席键客
这种就是看谁的数据全!
返回顶部
顶部