ユーザーエージェントを判別し、短縮表示させる
ユーザーエージェントを判別し、PCやモバイル(スマホ等)で表示を変えるというのは、今となっては当たり前となっております。
しかし、ユーザーエージェントをより見やすくするプログラムは、なかなか見つからなかったので、探してみました。
PHPのPEARでNet_UserAgent_Detectというのがありますが、情報が古すぎて使い物にならない。
色々探してみたら、ゴミ溜め@技術系日常系雑文というサイトの『備考録。ユーザーエージェントで処理を分ける。』という記事を見つけた。
こちらのサイトではIE11に対応してなかったので、少し手を加えてIE11にも対応させました。
<?php // ユーザーエージェントは下記が参考になる。 // http://www.openspc2.org/userAgent/ // ユーザーエージェントの取得。 $ua = $_SERVER['HTTP_USER_AGENT']; $browser = 'Unknown'; $version = 0; $is_mobile = false; // ブラウザの判別。 if( preg_match("/(MSIE|Chrome|Firefox|Android|Safari|Opera)[\/ ]([0-9.]*)/", $ua, $match ) ) { $browser = $match[1]; $version = explode( ".", $match[2] ); // ブラウザバージョンはドット区切りで配列として格納。 // (メジャーバージョンの数値の大小で比較し安くするため。) // IE11対応 }else if (strstr($ua, 'Trident') && strstr($ua, 'rv')) { if( preg_match("/(rv)[\: ]([0-9.]*)/", $ua, $match ) ) { $browser = "IE"; $version = explode( ".", $match[2] ); } } // デバイスがモバイル端末であるか判別。(タブレットは除く。) if( preg_match("/(iPhone|iPod|Windows Phone|Opera Mobi|Fennec|Android)/",$ua, $match ) ) { // Opera MobiはAndroid版Opera、FennecはAndroid版Firefox。 // なお、UA文字列中の"Opera Mobi" や"Fennec"という文字列は"Android"より後に記述されているので、 // 比較する順序に注意する。 // ex. // Opera/9.80 (Android 2.3.3; Linux; Opera Mobi/ADR-1111101157; U; ja) Presto/2.9.201 Version/11.50 // Mozilla/5.0 (Android; Linux armv7l; rv:9.0) Gecko/20111216 Firefox/9.0 Fennec/9.0 // Androidであり、Mobileを含まない場合は除外。 // 標準のAndroidブラウザの場合、UAにMobileという文字列を含むので、 // これの有無によってタブレットかスマフォかを判断する。 if( !( $match[1] == "Android" && !preg_match("/Mobile/",$ua) ) ) { $is_mobile = true; } } ?> <!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>ユーザーエージェントを判別する。</title></head><body> <p>User Agent: <?=$ua?></p> <p>あなたのブラウザは <?=$browser?> <!-- ブラウザ名を表示 --> <?=implode(".",$version)?> <!-- ブラウザバージョンをドット区切りで表示 --> ( <?= $is_mobile ? "mobile" : "not mobile" ?> ) <!-- モバイルか否かを表示 --> </p> </body></html>
ディスカッション
コメント一覧
まだ、コメントがありません