LoginSignup
12
16

More than 5 years have passed since last update.

UserAgentからAndroidの端末名を取得する方法

Last updated at Posted at 2015-07-17

いまさらかもですが、一部の?ロリポップ(Lolipop)端末のWebViewのUserAgent仕様が変更になりました。

変更点としては、ビルド番号の後に"wv"という文字列が追加されたようです。
Mozilla/5.0 (Linux; Android 5.0.2; SHV32 Build/S5231; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.129 Mobile Safari/537.36

ということで、昔書いた正規表現のプログラムを書き直しました。

getAndroidDeviceName.php
     // UA取得
        $userAgent = $_SERVER['HTTP_USER_AGENT'];

        // テスト用UA
        // 5.1系Chrome
        // $userAgent = "Mozilla/5.0 (Linux; Android 5.1; KYV35 Build/xxxx) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.93 Mobile Safari/537.36";
        // 5.1系WebView
        // $userAgent = "Mozilla/5.0 (Linux; Android 5.1; KYV35 Build/xxxx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36";
        // 5.0系Chrome
        // $userAgent = "Mozilla/5.0 (Linux; Android 5.0.2; SHV32 Build/S5231) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Mobile Safari/537.36";
        // 5.0系WebView
        // $userAgent = "Mozilla/5.0 (Linux; Android 5.0.2; SHV32 Build/S5231; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/42.0.2311.129 Mobile Safari/537.36";
        // 4.4系標準ブラウザ
        // $userAgent = "Mozilla/5.0 (Linux; U; Android 4.4.2; ja-jp; HTL23 Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
        // 4.4系Chrome
        // $userAgent = "Mozilla/5.0 (Linux; Android 4.4.2; HTL23 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36";
        // 4.4系WebView
        // $userAgent ="Mozilla/5.0 (Linux; Android 4.4.2; HTL23 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36";
        // 4.1系標準ブラウザ
        // $userAgent = "Mozilla/5.0 (Linux; U; Android 4.1.2; ja-jp; SonySOL21 Build/9.1.D.0.395) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
        // 4.1系Chrome
        // $userAgent = "Mozilla/5.0 (Linux; Android 4.1.2; SOL21 Build/9.1.D.0.395) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19";
        // 4.0系
        // $userAgent = "Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; SonyEricssonIS12S Build/6.1.D.0.170) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
        // 2.3系
        // $userAgent = "Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; SonyEricssonIS11S Build/4.0.1.B.0.112) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";

        // Android端末情報抽出
        $matches = array();
        preg_match("/\(.*Android[^\)]*\)/i", $userAgent, $matches);

        if (isset($matches[0])) { // Android端末の場合
            // UA分解
            $breakList = explode(";", $matches[0]);

            // 端末名はBuild番号の前に記述されているという前提条件あり!
            $tmpDeviceName = "";
            foreach($breakList as $val) {
                if (strpos($val, 'Build') === false) {
                    continue;
                } else {
                    $tmpDeviceName = $val;
                    break;
                }
            }

            // 端末名抽出(キャプチャグループ利用)
            $matches = array();
            preg_match('/ ([0-9A-Za-z\-\_ \/]+) Build\/[0-9A-Za-z\.\_]+?\)?/i', $tmpDeviceName, $matches);
            $deviceName = isset($matches[1]) ? $matches[1] : "odd android device";

        } else { // 非Android端末の場合
            $deviceName = "non android device";
        }

        echo $deviceName;

http://www.au.kddi.com/developer/android/kishu/ua/
上記から適当な端末を抽出して検証していますが、正規表現苦手なので、もっとこうした方がいいとか不具合とかあれば教えてください。(利用は自己責任でお願いします)

12
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
16