備考録。ユーザーエージェントで処理を分ける。
備考録。
ユーザーエージェントからブラウザ、ブラウザバージョンを特定し、スマフォであれば$is_mobileをtrueにするPHPコード。
<?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] ); // ブラウザバージョンはドット区切りで配列として格納。 // (メジャーバージョンの数値の大小で比較し安くするため。) } // デバイスがモバイル端末であるか判別。(タブレットは除く。) 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; } } ?>
HTMLで出力してみるには
<!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>
なんにせよ、ユーザーエージェントはバージョンが変わると書式が変わる可能性もある不確かなものなので、厳密な判別には使えない。
主にモバイル用とPC・タブレット用でCSSを変更するとか、とか。