我需要檢測瀏覽器是否爲Android(僅從1到2.3版本),這是否工作?在PHP中檢測Android瀏覽器(從V1到2.3固件)
if(preg_match('/Android [1-2.3]/', $_SERVER['HTTP_USER_AGENT'])) {
echo 'something';
}
我需要檢測瀏覽器是否爲Android(僅從1到2.3版本),這是否工作?在PHP中檢測Android瀏覽器(從V1到2.3固件)
if(preg_match('/Android [1-2.3]/', $_SERVER['HTTP_USER_AGENT'])) {
echo 'something';
}
Android
需求以下正則表達式可以完全匹配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])?)$
也會匹配'Android 2.4' –
這是怎麼回事? /Android [12] \。\ d/ – MultiformeIngegno
@MultiformeIngegno也可以匹配任何版本的'2. *' –
我真的不知道這些設備的UserAgents是什麼樣的,但你擁有的模式不可能是你想要的。我懷疑你想要的線沿線的東西更多:
'/Android (1\.\d|2\.[012])/'
有很多,你可以寫的模式不同的方式,但本質上這一個說,要遵循既1.{any number}
或2.0, 2.1 or 2.2
我想建議你使用Browscap的瀏覽器檢測。
get_browser
功能DOC http://php.net/manual/en/function.get-browser.php
「實際」 browscap .ini文件下載http://tempdownloads.browserscap.com
應當指出的是,該項目是目前在瀏覽器的問題,數據庫的進一步更新關閉。
使用exapmle你的情況:
$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
不是。正則表達式引擎無法知道版本號範圍的工作方式,可以嗎?你也在濫用角色類,即使它只是你嘗試匹配的一系列數字。這將匹配'Android 1','Android 2','Android'和'Android 3'。實際上,如果其中任何一個是輸入的子字符串,它就會匹配(所以它也會匹配'Android 2.5')。您能否向我們展示可能在輸入中顯示的實際可能的版本號? –
那麼,我需要回應一個不支持SVG的android版本的回退(所有版本<2.3)。 – MultiformeIngegno
這在這裏沒有什麼幫助。一個「壞」版本號的列表會。 –