PHP で iOS、Android 等の SmartPhone、Tablet を User Agent ごとに振り分けます。
PC と表示を切り替えたりするのに使えるかもしれません。
ただし、全ての端末を所有していないので、一部の端末でしか動作を確認していません。
参考させて頂いたサイト
PHPでスマートフォンのUA判別 – adbon.net
Android の User Agent
Google ウェブマスター向け公式ブログ: Android のユーザーエージェントの検出について
<?php $ua_list = array ( 'iPad','PlayBook','iPod','iPhone','Android','BlackBerry','webOS','Windows Phone OS' ); $ua = "false"; $ua_device = "none"; $ua_mobile = 0; //Mobile が含まれているか調べる $ua_mobile = preg_match( '/Mobile/', $_SERVER['HTTP_USER_AGENT'] ); for ( $i = 0; $i < sizeof( $ua_list ); $i++ ) { $str = "/".$ua_list[$i]."/i"; $ret = preg_match( $str, $_SERVER['HTTP_USER_AGENT'] ); if ($ret != 0 ) { //device 確認 // $ua_device = $ua_list[$i]; //iPad if ( $ua_list[$i] == "iPad" ) { break; } //PlayBook if ( $ua_list[$i] == "PlayBook" ) { break; } //Android Tablet if ( $ua_list[$i] == "Android" && $ua_mobile == 0 ) { break; } $ua = "true"; break; } } //確認用 //echo($_SERVER['HTTP_USER_AGENT']); //echo($ua_device); //echo($ua_mobile); ?>
Android では、SmartPhone は User Agent に “Mobile” が含まれているが Tablet には含まれておらず、そこで判別が出来るらしいです。
ですが、iOS だと iPad にも “Mobile” が含まれているので SmartPhone として判別されてしまいます。(iOS 5 beta 4で確認)なので、真っ先に “iPad” で break させて PC として振り分けています。同様に Android Tablet と PlayBook も PC として振り分けています。
念の為、”Mobile” が含まれているかは別で確認しています。
iPhone と iPod touch で振り分ける場合も、iPod touch の User Agent に “iPhone” が含まれているので、先に “iPod” で判別して break してしまうのが簡単だと思います。
BlackBerry PlayBook と webOS の User Agent には、それぞれ “PlayBook”、”webOS” が含まれているそうです。
BlackBerry PlayBook Simulator adds support for the BlackBerry Browser – BlackBerry Developer’s Blog
Forums webOS • View topic – How can I use my own User-Agent in webOS?
Windows Phone 7 は “Windows Phone OS 7.0″、Mango は “Windows Phone OS 7.5″ となっているそうなので、”Windows Phone OS” で判別出来るのかなと。
Windows Phone 7 user agent
Windows Phone の User Agent – 高橋 忍のブログ – Site Home – MSDN Blogs
確認出来たのは iPhone, iPad, iPod touch だけです。
BlackBerry は Bold9000 を持っていますが、有効な SIM が無いので Web に接続できず確認出来ませんでした。
Android, PlayBook, webOS, Windows Phone 7 は所有していないので、こちらも確認は出来ていません。