PHPでiPhoneとAndroidのOSバージョンを取得

WEBサイトにアクセスする利用者の情報をユーザーエージェントから調べることが出来ます。今回はユーザーエージェントからiPhoneAndroidのOSのバージョンを取得します。



<?php
    print_r(osVersion());

    /**
     *  ユーザーエージェント取得
     *
     */
    function ua()
    {
        return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    }

    /**
     * Android端末判定
     *
     */
    function is_android () {
        $useragents = array(
          'Android'        // Android
        );
        $pattern = '/'.implode('|', $useragents).'/i';

        if (!preg_match($pattern, $_SERVER['HTTP_USER_AGENT'])) {
            return false;
        }

        return true;
    }

    /**
     * iPhone端末判定
     *
     */
    function is_iphone () {
        $useragents = array(
          'iPhone'        // iPhone
        );
        $pattern = '/'.implode('|', $useragents).'/i';

        if (!preg_match($pattern, $_SERVER['HTTP_USER_AGENT'])) {
            return false;
        }

        return true;
    }

    /**
     * OSバージョン取得
     *
     */
    function osVersion()
    {
        $version = null;

        //Android端末
        if (is_android()) {
            if (preg_match('/Android ([0-9\.]+)/', ua(), $matches)) {
                $version = $matches;
            }
        }

        //iPhone端末
        if (is_iphone()) {
            if (preg_match('/iPhone OS ([0-9_]+)/', ua(), $matches)) {
                $matches[1] = str_replace('_', ',', $matches[1]);            
                $version = $matches;
            }
        }

        return $version;
    }
?>

●実行結果
・iPhoneの場合
Array
(
    [0] => iPhone OS 9_1
    [1] => 9.1
)

・Androidの場合
Array
(
    [0] => Android 5.1.1
    [1] => 5.1.1
)



OSバージョンが高いか低いかを判定するときに便利ですね。