ユーザーエージェントを判別し、短縮表示させる
ユーザーエージェントを判別し、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>







ディスカッション
コメント一覧
まだ、コメントがありません