Wednesday 15 June 2011

php detect browser version HTTP_USER_AGENT -



php detect browser version HTTP_USER_AGENT -

i seek observe browser version in order observe if current browser net explorer version superior or egual 8. seems doesn't work , i've got error (in firefox , in google chrome):

undefined index: http_user_agent in

here code:

preg_match('/msie (.*?);/', $_server['http_user_agent'], $matches); if(count($matches)<2){ preg_match('/trident\/\d{1,2}.\d{1,2}; rv:([0-9]*)/', $_server['http_user_agent'], $matches); } if (count($matches)>1){ $version = $matches[1]; } else { $version = 999; } if($version >= 9) { wp_enqueue_script('preloader'); }

none of get_browser alternatives output right name / version combination looking using opera or chrome. either give wrong name eg safari when in fact should chrome , if ua string includes version number latest versions of chrome , opera wrong number reported. here function can check version.

<?php function getbrowser() { $u_agent = $_server['http_user_agent']; $bname = 'unknown'; $platform = 'unknown'; $version= ""; //first 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 name of useragent yes seperately , 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"; } // right 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)) { // have no matching number go on } // see how many have $i = count($matches['browser']); if ($i != 1) { //we have 2 since not using 'other' argument yet //see if version before or after 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 have number if ($version==null || $version=="") {$version="?";} homecoming array( 'useragent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } // seek $ua=getbrowser(); $yourbrowser= "your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['useragent']; print_r($yourbrowser); ?>

php browser user-agent

No comments:

Post a Comment