我需要检测浏览器是否为 Android(仅从 1 到 2.3 版本),这行得通吗?
if(preg_match('/Android [1-2.3]/', $_SERVER['HTTP_USER_AGENT'])) {
echo 'something';
}
我需要检测浏览器是否为 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])?$)
为了MSIE [6-8] Android [1-2.3]
MSIE [6-8] Android ([1](?:\.[0-9])?|[2](?:\.[0-3])?)$
我真的不知道这些设备的 UserAgent 是什么样的,但是您拥有的模式不太可能是您想要的。我怀疑你想要更多的东西:
'/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
“实际”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 浏览器版本,无论是 xxx 格式还是 xx 我有一个正则表达式来确定设备是否使用我支持的版本之一(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