我需要检测浏览器是否为Android(仅从1到2.3版本),这会工作吗?
if(preg_match('/Android [1-2.3]/', $_SERVER['HTTP_USER_AGENT'])) {
echo 'something';
}
下面的Regex可以完全匹配Android [1-2.3]
。
Android ([1](?:'.[0-9])?|[2](?:'.[0-3])?$)
For MSIE [6-8] Android [1-2.3]
MSIE [6-8] Android ([1](?:'.[0-9])?|[2](?:'.[0-3])?)$
在这里运行正则表达式
我真的不知道这些设备的UserAgents看起来像什么,但是您拥有的模式不太可能是您想要的。我猜你想要一些类似于
的东西。'/Android (1'.'d|2'.[012])/'
有很多不同的方式可以写模式,但本质上说,Android
需要后跟1.{any number}
或2.0, 2.1 or 2.2
我建议您使用Browscap进行浏览器检测。
get_browser
函数文档http://php.net/manual/en/function.get-browser.php
'Actual' browscap .ini文件下载http://tempdownloads.browserscap.com
需要注意的是,该项目目前已关闭,并将进一步更新浏览器数据库。
用法示例:
$browser = get_browser(null, true);
if (array_key_exists('Platform', $browser) && array_key_exists('Platform_Version', $browser) && $browser['Platform'] == 'Android' && $browser['Platform_Version'] <= 2.3) {
echo 'Android <2.3 version';
}
您可以使用以下正则表达式来获取Android浏览器版本,无论是x.x.x格式还是x.x格式。我有一个正则表达式来确定设备是否使用我支持的版本之一(2.3)。x +):
/Android ([2].?[3-9].?[0-9]?|[3].?[0-9].?[0-9]?|[4].?[0-9].?[0-9]?)/
从github我发现这段代码非常有用:https://gist.github.com/Abban/3939726
if(is_old_android('2.3')) {
echo 'This device has Android 2.3 or lower';
}
function is_old_android($version = '4.0.0'){
if(strstr($_SERVER['HTTP_USER_AGENT'], 'Android')){
preg_match('/Android ('d+(?:'.'d+)+)[;)]/', $_SERVER['HTTP_USER_AGENT'], $matches);
// $matches[0]= Android 4.1.2;
// $matches[1]= 4.1.2
return version_compare($matches[1], $version, '<=');
}
}
非常有用的函数:version_compare