note 88759 added to function.get-browser

From: Date: Fri, 06 Feb 2009 10:57:31 +0000
Subject: note 88759 added to function.get-browser
Groups: php.notes 
Request: Send a blank email to php-notes+get-150293@lists.php.net to get a copy of this message
Daniel Frechette's code shown me "unrecognized" for way too many browsers so I decided to merge small part of his code with tectonikNOSPAM at free dot fr one. I also removed globals (which I never use), and made a function of it. Detects browser and platform. The input can be true - for array - or false - for simple string output. Tested - works on Win, Mac, and browsers specified. <?php function checkBrowser($input) { $browsers = "mozilla msie gecko firefox "; $browsers.= "konqueror safari netscape navigator "; $browsers.= "opera mosaic lynx amaya omniweb"; $browsers = split(" ", $browsers); $userAgent = strToLower( $_SERVER['HTTP_USER_AGENT']); $l = strlen($userAgent); for ($i=0; $i<count($browsers); $i++){ $browser = $browsers[$i]; $n = stristr($userAgent, $browser); if(strlen($n)>0){ $version = ""; $navigator = $browser; $j=strpos($userAgent, $navigator)+$n+strlen($navigator)+1; for (; $j<=$l; $j++){ $s = substr ($userAgent, $j, 1); if(is_numeric($version.$s) ) $version .= $s; else break; } } } if (strpos($userAgent, 'linux')) { $platform = 'linux'; } else if (strpos($userAgent, 'macintosh') || strpos($userAgent, 'mac platform x')) { $platform = 'mac'; } else if (strpos($userAgent, 'windows') || strpos($userAgent, 'win32')) { $platform = 'windows'; } if ($input==true) { return array( "browser" => $navigator, "version" => $version, "platform" => $platform, "userAgent" => $userAgent); }else{ return "$navigator $version"; } } /* USAGE: */ //array output: $i = checkBrowser(false); print_r($i); //will give: //Array ( [browser] => firefox [version] => 3.0 [platform] => windows [userAgent] => mozilla/5.0 (windows; u; windows nt 5.1; pl; rv:1.9.0.6) gecko/2009011913 firefox/3.0.6 ) //string output: echo checkBrowser(true); //will give: firefox 3.0 ?> ---- Server IP: 82.177.164.100 Probable Submitter: 78.8.130.93 ---- Manual Page -- http://www.php.net/manual/en/function.get-browser.php Edit -- https://master.php.net/note/edit/88759 Del: integrated -- https://master.php.net/note/delete/88759/integrated Del: useless -- https://master.php.net/note/delete/88759/useless Del: bad code -- https://master.php.net/note/delete/88759/bad+code Del: spam -- https://master.php.net/note/delete/88759/spam Del: non-english -- https://master.php.net/note/delete/88759/non-english Del: in docs -- https://master.php.net/note/delete/88759/in+docs Del: other reasons-- https://master.php.net/note/delete/88759 Reject -- https://master.php.net/note/reject/88759 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#150293) next »