dorayakiBlog

PHPのサーバー変数でユーザーエージェントを使いスマホ(iPhone iPad Android)別にアクセスを分けるには

プログラミング言語のPHPでサイトへのアクセスをスマホやタブレットのタイプ別に判別して振り分けるにはどうすれば良いか忘れない様にメモしておきます。

それには$_SERVERで始まるサーバー変数に格納されているアクセスしてきたユーザーのユーザーエージェント(useragent)の情報を取得する。

$_SERVER['HTTP_USER_AGENT']
の様に取得したいuseragentのパラメータを記述して変数として利用する事が出来る。

スマホ及びタブレットを大別するとiPhone、Androidスマホ、iPad、 Androidタブレットがある(他のタイプのスマートデバイスはuseragentの情報をecho()等で表示して確認する。

とりあえず冗長にならない様に普通の変数に代入。preg_match('検索したい文字列' , '検索対象となる文字列')関数で目的のデバイスの名称が含まれているか判定する。

$ua = $_SERVER['HTTP_USER_AGENT'];

・iPhone
preg_match('/iPhone/i' , $ua);

・Androidスマホ
preg_match('/Android.*Mobile/i' , $ua);

・iPad
preg_match('/iPad/i' , $ua);

・Androidタブレット
preg_match('/Android/i' , $ua)

AndroidではMobileという表記があるかどうかでスマホかタブレットか判別する。 検索したい文字列を/で囲っているのは正規表現の書式であり隣に添えるiは大文字小文字を問わないという正規表現の指定方法。Android.*Mobileの.*は任意の回数繰り返される文字列を意味する(Androidと Mobileの間の文字列は何でも良いし何個でも良いけどAndroidとMobileは含むという事)。.(ドット)は何かしらの任意の文字を指定し、*(アスタリスク)は0回以上は繰り返すという事を指定する。