0

ブラウザがAndroid(1からバージョン2.3のみ)であるかどうかを検出する必要がありますが、これは機能しますか?

if(preg_match('/Android [1-2.3]/', $_SERVER['HTTP_USER_AGENT'])) {
 echo 'something';
}
4

5 に答える 5

1

次の正規表現は正確に一致します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])?)$

ここで正規表現を実行する

于 2012-12-24T13:37:30.383 に答える
0

それらのデバイスのUserAgentがどのように見えるかは本当にわかりませんが、あなたが持っているパターンはあなたが望むものではない可能性があります。私はあなたが次の線に沿ってもっと何かを望んでいると思います:

'/Android (1\.\d|2\.[012])/'

パターンを書く方法はたくさんありますが、基本的にこれは、次のいずれかを続ける必要があると言っていますAndroid1.{any number}2.0, 2.1 or 2.2

于 2012-12-24T13:31:39.987 に答える
0

ブラウザの検出に 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';
}
于 2012-12-24T13:43:33.290 に答える