I am trying to get the Browser Version to output properly only outputs “?” any help would be greatly appreciated!
[php]<?php
$user_agent = $_SERVER[‘HTTP_USER_AGENT’];
function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/windows nt 6.2/i' => 'Windows 8',
'/windows nt 6.1/i' => 'Windows 7',
'/windows nt 6.0/i' => 'Windows Vista',
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
'/windows nt 5.1/i' => 'Windows XP',
'/windows xp/i' => 'Windows XP',
'/windows nt 5.0/i' => 'Windows 2000',
'/windows me/i' => 'Windows ME',
'/win98/i' => 'Windows 98',
'/win95/i' => 'Windows 95',
'/win16/i' => 'Windows 3.11',
'/macintosh|mac os x/i' => 'Mac OS X',
'/mac_powerpc/i' => 'Mac OS 9',
'/linux/i' => 'Linux',
'/ubuntu/i' => 'Ubuntu',
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile'
);
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
return $os_platform;
}
function getBrowser() {
global $user_agent;
$browser = "Unknown Browser";
$browser_array = array(
'/msie/i' => 'Internet Explorer',
'/firefox/i' => 'Mozilla Firefox',
'/safari/i' => 'Apple Safari',
'/chrome/i' => 'Google Chrome',
'/opera/i' => 'Opera',
'/netscape/i' => 'Netscape',
'/maxthon/i' => 'Maxthon',
'/konqueror/i' => 'Konqueror',
'/mobile/i' => 'Handheld Browser'
);
foreach ($browser_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$browser = $value;
}
}
return $browser;
}
//####################################################
//############ PROBLEM AREA BELOW!!! #################
//######### RETURNS “?” NOT A VERSION NUMBER #########
//####################################################
function getVersion() {
global $user_agent;
$version = "Unknown Version";
$version_array = $known = array('Version', $version, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $user_agent, $matches)) {
// we have no matching number just continue
}
foreach ($version_array as $regex => $value) {
if (preg_match("/".$regex."/i", $user_agent)) {
$version = $value;
}
$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($user_agent,“Version”) < strripos($user_agent,$version)){
$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="?";}
//0002089304102937
return $version;
} }
//####################################################
//############ PROBLEM AREA ABOVE!!! #################
//####################################################
$user_os = getOS();
$user_browser = getBrowser();
$user_version = getVersion();
$device_details = "Browser: ".$user_browser . " : " .$user_version .“
Operating System: “.$user_os.””;
print_r($device_details);
?>
[/php]
Output looks like:
Browser: Mozilla Firefox : ?
Operating System: Windows 7