PC、Android スマホ、Android タブレット、iPad、iPhoneの判定

PHPで単純に振り分けるようなものがほしかったので、自分用に作成してみました。

※詳細に全ての端末を正確に振り分けることは目的としていません。
正確に作成したい人は、参考程度にどうぞ。

<?php
/**
 * PC
 */
define('UA_PC', 'PC');

/**
 * アンドロイドタブレット
 */
define('UA_ANDROID_TABLET', 'AndroidTablet');

/**
 * アンドロイドスマホ
 */
define('UA_ANDROID_MOBILE', 'AndroidMobile');

/**
 * iPad
 */
define('UA_IPAD', 'iPad');

/**
 * iPhone
 */
define('UA_IPHONE', 'iPhone');

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

    /**
     * アンドロイド端末判定
     *
     * @return BOOL
     * @access public
     */
    function is_android () {
        $useragents = array(
                'Android'        // Android
        );
        $pattern = '/'.implode('|', $useragents).'/i';

        if (!preg_match($pattern, $this->ua())) {
            return false;
        }

        return true;
    }

    /**
     * アンドロイドモバイル端末判定
     *
     * @return BOOL
     * @access public
     */
    function is_android_mobile () {
        if (!$this->is_android()) {
            return false;
        }

        $useragents = array(
                'Mobile'        // Mobile
        );
        $pattern = '/'.implode('|', $useragents).'/i';

        if (!preg_match($pattern, $this->ua())) {
            return false;
        }

        return true;
    }

    /**
     * iPad端末判定
     *
     * @return BOOL
     * @access public
     */
    function is_ipad () {
        $useragents = array(
                'iPad'        // iPad
        );
        $pattern = '/'.implode('|', $useragents).'/i';

        if (!preg_match($pattern, $this->ua())) {
            return false;
        }

        return true;
    }

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

        if (!preg_match($pattern, $this->ua())) {
            return false;
        }

        return true;
    }

    /**
     * PC、タブレット、スマホ端末判定
     *
     * @return string
     * @access public
     */
    function ua_type(){
        if($this->is_android()){
            //Android
            if($this->is_android_mobile()){
                //スマホ
                $ua_type = UA_ANDROID_MOBILE;
            } else {
                //タブレット
                $ua_type = UA_ANDROID_TABLET;
            }

        } elseif($this->is_ipad()){
            //iPad
            $ua_type = UA_IPAD;

        } elseif($this->is_iphone()){
            //iPhone
            $ua_type = UA_IPHONE;

        } else {
            //PC
            $ua_type = UA_PC;
        }

        return $ua_type;
    }
}
?>

関数ua_type」の戻り値で定数で指定した端末の文字列を返すという単純なものです。



■おすすめサービス