ユーザーエージェントを判別し、短縮表示させる

ユーザーエージェントを判別し、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>