note 86976 deleted from function.get-browser by danbrown
| From: | danbrown@php.net | Date: | Tue, 18 May 2010 15:12:57 +0000 |
| Subject: | note 86976 deleted from function.get-browser by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-169361@lists.php.net to get a copy of this message | ||
Note Submitter: Daniel Frechette
----
The Great God Om, I reformatted your script, made a few enhancements and fixed a few errors.
<?php
function getBrowserInfo() {
$SUPERCLASS_NAMES = "gecko,mozilla,mosaic,webkit";
$SUPERCLASSES_REGX = "(?:".str_replace(",", ")|(?:",
$SUPERCLASS_NAMES).")";
$SUBCLASS_NAMES = "opera,msie,firefox,chrome,safari";
$SUBCLASSES_REGX = "(?:".str_replace(",", ")|(?:",
$SUBCLASS_NAMES).")";
$browser = "unsupported";
$majorVersion = "0";
$minorVersion = "0";
$fullVersion = "0.0";
$os = 'unsupported';
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
$found = preg_match("/(?P<browser>".$SUBCLASSES_REGX.")(?:\D*)
(?P<majorVersion>\d*)(?P<minorVersion>(?:\.\d*)*)/i",
$userAgent, $matches);
if (!$found) {
$found = preg_match("/(?P<browser>".$SUPERCLASSES_REGX.")(?:\D*)
(?P<majorVersion>\d*)(?P<minorVersion>(?:\.\d*)*)/i",
$userAgent, $matches);
}
if ($found) {
$browser = $matches["browser"];
$majorVersion = $matches["majorVersion"];
$minorVersion = $matches["minorVersion"];
$fullVersion = $matches["majorVersion"].$matches["minorVersion"];
if ($browser != "safari") {
if (preg_match("/version\/(?P<majorVersion>\d*)
(?P<minorVersion>(?:\.\d*)*)/i",
$userAgent, $matches)){
$majorVersion = $matches["majorVersion"];
$minorVersion = $matches["minorVersion"];
$fullVersion = $majorVersion.".".$minorVersion;
}
}
}
if (strpos($userAgent, 'linux')) {
$os = 'linux';
}
else if (strpos($userAgent, 'macintosh') || strpos($userAgent, 'mac os x')) {
$os = 'mac';
}
else if (strpos($userAgent, 'windows') || strpos($userAgent, 'win32')) {
$os = 'windows';
}
return array(
"browser" => $browser,
"majorVersion" => $majorVersion,
"minorVersion" => $minorVersion,
"fullVersion" => $fullVersion,
"os" => $os);
}
?>