Advertisement
killerbng

Get Browser and OS

Mar 16th, 2015
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.12 KB | None | 0 0
  1. <?php
  2. function getBrowser(){
  3.     $u_agent = $_SERVER['HTTP_USER_AGENT'];
  4.     $bname = 'Unknown';
  5.     $platform = 'Unknown';
  6.     $version= "";
  7.  
  8.     //First get the platform?
  9.     if (preg_match('/linux/i', $u_agent)) {
  10.         $platform = 'Linux';
  11.     }
  12.     elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
  13.         $platform = 'Mac';
  14.     }
  15.     elseif (preg_match('/windows|win32/i', $u_agent)) {
  16.         $platform = 'Windows';
  17.          if (preg_match('/NT 6.2/i', $u_agent)) { $platform .= ' 8'; }
  18.             elseif (preg_match('/NT 6.3/i', $u_agent)) { $platform .= ' 8.1'; }
  19.             elseif (preg_match('/NT 6.1/i', $u_agent)) { $platform .= ' 7'; }
  20.             elseif (preg_match('/NT 6.0/i', $u_agent)) { $platform .= ' Vista'; }
  21.             elseif (preg_match('/NT 5.1/i', $u_agent)) { $platform .= ' XP'; }
  22.             elseif (preg_match('/NT 5.0/i', $u_agent)) { $platform .= ' 2000'; }
  23.         if (preg_match('/WOW64/i', $u_agent) || preg_match('/x64/i', $u_agent)) { $platform .= ' (x64)'; }
  24.     }
  25.    
  26.     // Next get the name of the useragent yes seperately and for good reason
  27.     if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
  28.     {
  29.         $bname = 'Internet Explorer';
  30.         $ub = "MSIE";
  31.     }
  32.     elseif(preg_match('/Firefox/i',$u_agent))
  33.     {
  34.         $bname = 'Mozilla Firefox';
  35.         $ub = "Firefox";
  36.     }
  37.     elseif(preg_match('/Chrome/i',$u_agent))
  38.     {
  39.         $bname = 'Google Chrome';
  40.         $ub = "Chrome";
  41.     }
  42.     elseif(preg_match('/Safari/i',$u_agent))
  43.     {
  44.         $bname = 'Apple Safari';
  45.         $ub = "Safari";
  46.     }
  47.     elseif(preg_match('/Opera/i',$u_agent))
  48.     {
  49.         $bname = 'Opera';
  50.         $ub = "Opera";
  51.     }
  52.     elseif(preg_match('/Netscape/i',$u_agent))
  53.     {
  54.         $bname = 'Netscape';
  55.         $ub = "Netscape";
  56.     }
  57.    
  58.     // finally get the correct version number
  59.     $known = array('Version', $ub, 'other');
  60.     $pattern = '#(?<browser>' . join('|', $known) .
  61.     ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
  62.     if (!preg_match_all($pattern, $u_agent, $matches)) {
  63.         // we have no matching number just continue
  64.     }
  65.    
  66.     // see how many we have
  67.     $i = count($matches['browser']);
  68.     if ($i != 1) {
  69.         //we will have two since we are not using 'other' argument yet
  70.         //see if version is before or after the name
  71.         if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
  72.             $version= $matches['version'][0];
  73.         }
  74.         else {
  75.             $version= $matches['version'][1];
  76.         }
  77.     }
  78.     else {
  79.         $version= $matches['version'][0];
  80.     }
  81.    
  82.     // check if we have a number
  83.     if ($version==null || $version=="") {$version="?";}
  84.    
  85.     return array(
  86.         'userAgent' => $u_agent,
  87.         'name'      => $bname,
  88.         'version'   => $version,
  89.         'platform'  => $platform,
  90.         'pattern'   => $pattern
  91.     );
  92. }
  93.  
  94. //EXAMPLE
  95. /*$ua=getBrowser();
  96. $yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
  97. print_r($yourbrowser);*/
  98. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement