212 lines
5.1 KiB
PHP
212 lines
5.1 KiB
PHP
<?php
|
|
/* Copyright 2008-2015 Kyle Baker (email: kyleabaker@gmail.com)
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
// Detect Web Browser versions
|
|
function detect_browser_version($useragent,$title)
|
|
{
|
|
//global $useragent;
|
|
|
|
// Fix for Opera's UA string changes in v10.00+ (and others)
|
|
$start=$title;
|
|
if( (strtolower($title)==strtolower("Opera")
|
|
|| strtolower($title)==strtolower("Opera Next")
|
|
|| strtolower($title)==strtolower("Opera Labs"))
|
|
&& preg_match('/Version/i', $useragent))
|
|
{
|
|
$start="Version";
|
|
}
|
|
elseif( (strtolower($title)==strtolower("Opera")
|
|
|| strtolower($title)==strtolower("Opera Next")
|
|
|| strtolower($title)==strtolower("Opera Developer"))
|
|
&& preg_match('/OPR/i', $useragent))
|
|
{
|
|
$start="OPR";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Opera Mobi")
|
|
&& preg_match('/Version/i', $useragent))
|
|
{
|
|
$start="Version";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Safari")
|
|
&& preg_match('/Version/i', $useragent))
|
|
{
|
|
$start="Version";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Pre")
|
|
&& preg_match('/Version/i', $useragent))
|
|
{
|
|
$start="Version";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Android Webkit"))
|
|
{
|
|
$start="Version";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Links"))
|
|
{
|
|
$start="Links \\(";
|
|
}
|
|
elseif(strtolower($title)==strtolower("UC Browser"))
|
|
{
|
|
$start="UC Browse";
|
|
}
|
|
elseif(strtolower($title)==strtolower("TenFourFox"))
|
|
{
|
|
$start=" rv";
|
|
}
|
|
elseif(strtolower($title)==strtolower("Classilla"))
|
|
{
|
|
$start=" rv";
|
|
}
|
|
elseif(strtolower($title)==strtolower("SmartTV"))
|
|
{
|
|
$start="WebBrowser";
|
|
}
|
|
elseif(strtolower($title)==strtolower("MSIE") && preg_match('/\ rv:([.0-9a-zA-Z]+)/i', $useragent))
|
|
{
|
|
// We have IE11 or newer
|
|
$start=" rv";
|
|
}
|
|
|
|
// Grab the browser version if its present
|
|
preg_match('/'.$start.'[\ |\/|\:]?([.0-9a-zA-Z]+)/i', $useragent, $regmatch);
|
|
$version=$regmatch[1];
|
|
|
|
// Return browser Title and Version, but first..some titles need to be changed
|
|
if(strtolower($title)=="msie"
|
|
&& strtolower($version)=="7.0"
|
|
&& preg_match('/Trident\/4.0/i', $useragent))
|
|
{
|
|
return " 8.0 (Compatibility Mode)"; // Fix for IE8 quirky UA string with Compatibility Mode enabled
|
|
}
|
|
elseif(strtolower($title)=="msie")
|
|
{
|
|
return " ".$version;
|
|
}
|
|
elseif(strtolower($title)=="NetFrontLifeBrowser")
|
|
{
|
|
return "NetFront Life ".$version;
|
|
}
|
|
elseif(strtolower($title)=="ninesky-android-mobile")
|
|
{
|
|
return "Ninesky ".$version;
|
|
}
|
|
elseif(strtolower($title)=="coc_coc_browser")
|
|
{
|
|
return "Coc Coc ".$version;
|
|
}
|
|
elseif(strtolower($title)=="gsa")
|
|
{
|
|
return "Google Search App ".$version;
|
|
}
|
|
elseif(strtolower($title)=="multi-browser")
|
|
{
|
|
return "Multi-Browser XP ".$version;
|
|
}
|
|
elseif(strtolower($title)=="nf-browser")
|
|
{
|
|
return "NetFront ".$version;
|
|
}
|
|
elseif(strtolower($title)=="semc-browser")
|
|
{
|
|
return "SEMC Browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="ucweb")
|
|
{
|
|
return "UC Browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="up.browser"
|
|
|| strtolower($title)=="up.link")
|
|
{
|
|
return "Openwave Mobile Browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="chromeframe")
|
|
{
|
|
return "Google Chrome Frame ".$version;
|
|
}
|
|
elseif(strtolower($title)=="mozilladeveloperpreview")
|
|
{
|
|
return "Mozilla Developer Preview ".$version;
|
|
}
|
|
elseif(strtolower($title)=="multi-browser")
|
|
{
|
|
return "Multi-Browser XP ".$version;
|
|
}
|
|
elseif(strtolower($title)=="opera mobi")
|
|
{
|
|
return "Opera Mobile ".$version;
|
|
}
|
|
elseif(strtolower($title)=="osb-browser")
|
|
{
|
|
return "Gtk+ WebCore ".$version;
|
|
}
|
|
elseif(strtolower($title)=="tablet browser")
|
|
{
|
|
return "MicroB ".$version;
|
|
}
|
|
elseif(strtolower($title)=="tencenttraveler")
|
|
{
|
|
return "TT Explorer ".$version;
|
|
}
|
|
elseif(strtolower($title)=="crmo")
|
|
{
|
|
return "Chrome Mobile ".$version;
|
|
}
|
|
elseif(strtolower($title)=="smarttv")
|
|
{
|
|
return "Maple Browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="wp-android"
|
|
|| strtolower($title)=="wp-iphone")
|
|
{
|
|
//TODO check into Android version being returned
|
|
return "Wordpress App ".$version;
|
|
}
|
|
elseif(strtolower($title)=="atomicbrowser")
|
|
{
|
|
return "Atomic Web Browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="barcapro")
|
|
{
|
|
return "Barca Pro ".$version;
|
|
}
|
|
elseif(strtolower($title)=="dplus")
|
|
{
|
|
return "D+ ".$version;
|
|
}
|
|
elseif(strtolower($title)=="nichrome\/self")
|
|
{
|
|
return "Rambler browser ".$version;
|
|
}
|
|
elseif(strtolower($title)=="opera labs")
|
|
{
|
|
preg_match('/Edition\ Labs([\ ._0-9a-zA-Z]+);/i', $useragent, $regmatch);
|
|
return $title.$regmatch[1]." ".$version;
|
|
}
|
|
elseif(strtolower($title)=="escape"
|
|
|| strtolower($title)=="espial")
|
|
{
|
|
return $version;
|
|
}
|
|
else
|
|
{
|
|
return $title." ".$version;
|
|
}
|
|
}
|
|
|
|
?>
|