Get exact browser name and version in php

I found the get_browser() output the correct name / version combination that I was looking for using Opera or Chrome Or IE. get_browser either give worng name of browser of platform. I have made some change in code and collect code from different samples and made one exmple. This example is showing name of browser and version of browser with it's platform. This is how we can get exact browser name and version in php.


 <?php  
 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'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];  
 print_r($yourbrowser);  
 ?>  

Nikunj K

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.