zoukankan      html  css  js  c++  java
  • php -gainbrowerinfo

    <?php
    
    /**
     * @Author: cyany_blue
     * @Date:   2018-11-24 11:04:37
     * @Last Modified by:   cyany_blue
     * @Last Modified time: 2018-11-24 11:09:41
     */
             function getBrowser() { 
                $u_agent = $_SERVER['HTTP_USER_AGENT']; 
                $bname = 'Unknown';
                $platform = 'Unknown';
                $version = "";
                
                //First get the platform?
                if (preg_match('/linux/i', $u_agent)) {
                   $platform = 'linux';
                }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
                   $platform = 'mac';
                }elseif (preg_match('/windows|win32/i', $u_agent)) {
                   $platform = 'windows';
                }
                
                // Next get the name of the useragent yes seperately and for good reason
                if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
                   $bname = 'Internet Explorer';
                   $ub = "MSIE";
                } elseif(preg_match('/Firefox/i',$u_agent)) {
                   $bname = 'Mozilla Firefox';
                   $ub = "Firefox";
                } elseif(preg_match('/Chrome/i',$u_agent)) {
                   $bname = 'Google Chrome';
                   $ub = "Chrome";
                }elseif(preg_match('/Safari/i',$u_agent)) {
                   $bname = 'Apple Safari';
                   $ub = "Safari";
                }elseif(preg_match('/Opera/i',$u_agent)) {
                   $bname = 'Opera';
                   $ub = "Opera";
                }elseif(preg_match('/Netscape/i',$u_agent)) {
                   $bname = 'Netscape';
                   $ub = "Netscape";
                }
                
                // finally get the correct version number
                $known = array('Version', $ub, 'other');
                $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
                
                if (!preg_match_all($pattern, $u_agent, $matches)) {
                   // we have no matching number just continue
                }
                
                // see how many we have
                $i = count($matches['browser']);
                
                if ($i != 1) {
                   //we will have two since we are not using 'other' argument yet
                   
                   //see if version is before or after the name
                   if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                      $version= $matches['version'][0];
                   }else {
                      $version= $matches['version'][1];
                   }
                }else {
                   $version= $matches['version'][0];
                }
                
                // check if we have a number
                if ($version == null || $version == "") {$version = "?";}
                return array(
                   'userAgent' => $u_agent,
                   'name'      => $bname,
                   'version'   => $version,
                   'platform'  => $platform,
                   'pattern'   => $pattern
                );
             }
             
             // now try it
             $ua = getBrowser();
             $yourbrowser = "Your browser: " . $ua['name'] . "<br> " . $ua['version'] .
                "<br> on " .$ua['platform'] . "<br> reports: <br >" . $ua['userAgent'];
             
             print_r($yourbrowser);
          ?>
    

  • 相关阅读:
    HTTP状态码
    MySQL的order by时区分大小写
    CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景
    Map接口
    Python中创建守护进程
    df说磁盘空间满了, du说没有,到底谁是对的
    几种分布式文件系统对比
    Unity:控制粒子特效的移动方向
    创建NuGet包
    NuGet的简单使用
  • 原文地址:https://www.cnblogs.com/cyany/p/10011382.html
Copyright © 2011-2022 走看看