Web制作ネタということで、メジャーどころのデバイスを判定するための関数を作ってみました。
デバイスによって出力するものを変えたい場合やCSSを切り替えたい場合などに役立つかなーと思います。
この記事のメニュー
コードを作るに至った経緯
以前運営していたサイトの時に作ったコードですが、汎用性はあると思ったので公開させていただきました。
WordPressには、3.4から使えるwp_is_mobile()関数はありますが、ガラケーの判定には使えないのでどうせならとまとめるために作っただけなんですが…
今回はWordPressで使う場合の説明を書きますが、PHPを使っているものなら関係なく使えます。
functions.phpにコードを追加する
まず、functions.phpに下記コードを追加します。
※コードにマウスカーソルを合わせると出る「紙が2枚重なっているアイコン」を押すと全選択されるのでCtrl+Cを押してコピー可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | //---------------------------------------------------- // デバイス判定 //---------------------------------------------------- function is_device() { $device_info = ''; // ユーザーエージェントを変数に格納する。 $ua = $_SERVER['HTTP_USER_AGENT']; // スマートフォンで判定したい端末のUAを配列に入れる $spes = array( 'iPhone', // Apple iPhone 'iPod', // Apple iPod touch 'Android', // Android 'dream', // Pre 1.5 Android 'CUPCAKE', // 1.5+ Android 'blackberry', // blackberry 'webOS', // Palm Pre Experimental 'incognito', // Other iPhone browser 'webmate' // Other iPhone browser ); // タブレットで判定したい端末のUAを配列に入れる $tabs = array( 'iPad', 'Android' ); // ガラケーで判定したい端末のUAを配列に入れる。 $mbes = array( 'DoCoMo', 'KDDI', 'DDIPOKET', 'UP.Browser', 'J-PHONE', 'Vodafone', 'SoftBank', ); // デバイス変数が空だったら判定する if(empty($device_info)) { // タブレット判定 foreach($tabs as $tab) { $str = "/".$tab."/i"; // ユーザーエージェントにstrが含まれていたら実行する if (preg_match($str,$ua)) { // strがAndroidだったらのモバイル判定を行う。 if ($str === '/Android/i') { // ユーザーエージェントにMobileが含まれていなかったらタブレット if (!preg_match("/Mobile/i", $ua)) { $device_info = 'tab'; } // ユーザーエージェントにMobileが含まれていたらスマートフォン else { $device_info = 'sp'; } } // Android以外はそのまま結果を返す else { $device_info = 'tab'; } } } } // デバイス変数が空だったら判定する if(empty($device_info)) { // スマートフォン判定 foreach($spes as $sp) { $str = "/".$sp."/i"; // ユーザーエージェントにstrが含まれていたらスマートフォン if (preg_match($str,$ua)) { $device_info = 'sp'; } } } // デバイス変数が空だったら判定する if(empty($device_info)) { // ガラケー判定 foreach($mbes as $mb) { $str = "/".$mb."/i"; // ユーザーエージェントにstrが含まれていたらガラケー if (preg_match($str,$ua)) { $device_info = 'mb'; } } } // どの判定にも引っかからなかった場合はPCとする if(empty($device_info)) { $device_info = 'pc'; } return $device_info; } |
※コードにマウスカーソルを合わせると出る「紙が2枚重なっているアイコン」を押すと全選択されるのでCtrl+Cを押してコピー可能です。
判定したい箇所で書くコード
functions.phpにコードを追加し終わったら、判定を行いたい箇所で下記のような記述を行います。
※コードにマウスカーソルを合わせると出る「紙が2枚重なっているアイコン」を押すと全選択されるのでCtrl+Cを押してコピー可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $device = is_device(); if($device == 'tab') { // ここにタブレットだった場合のコンテンツなど } elseif($device == 'sp') { // ここにスマートフォンだった場合のコンテンツなど } elseif($device == 'mb') { // ここにガラケーだった場合のコンテンツなど } else { // どれにも判定されなかった端末(PC)の場合のコンテンツなど } ?> |
※コードにマウスカーソルを合わせると出る「紙が2枚重なっているアイコン」を押すと全選択されるのでCtrl+Cを押してコピー可能です。
これで端末によって処理を分けたい時などに簡単に使う事が出来ます!
あくまで簡単な判定をするためのコードなので、UA偽装などによりUA情報が変更されている場合などについては正しい判定は行われません。
また、判定可能なデバイスなどはご自分で追加することも出来るので、もっと使いやすくいじってみてください!
あとでよむ / みんなにシェアする