PHP でモバイルデバイスを検出する
PHP でモバイルデバイスを検出するためのいくつかの方法を紹介します。
PHP で mobiledetect
クラスを使用してモバイルデバイスを検出する
Mobile Detect
と呼ばれる軽量の PHP クラスを使用して、PHP でモバイルデバイスを検出できます。タブレットデバイスも検出します。ライブラリは、特定の HTTP ヘッダーとユーザーエージェント文字列を使用してモバイルデバイスを検出します。次のコマンドで composer を使用してライブラリをダウンロードできます。
composer require mobiledetect/mobiledetectlib
ライブラリには、さまざまなモバイル環境を検出するための isMobile()
、isTablet()
、isIOS()
などのさまざまなメソッドが用意されています。Mobile_Detect()
クラスのオブジェクトを作成し、これらのメソッドを使用できます。
たとえば、上記の composer コマンドを使用して、プロジェクトディレクトリのライブラリをダウンロードします。次に、require_once
関数を使用してファイル autoload.php
を要求します。このファイルは、vendor
ディレクトリ内にあります。次に、Mobile_Detect()
クラスのオブジェクト $detect
を作成します。次に、関数 isMobile()
を if
条件で使用します。if
ブロック内に Mobile device detected
というメッセージを表示し、else Mobile device not detected
というメッセージを表示します。
以下の例では、Web ページがモバイルデバイスからアクセスされているかどうかを検出します。以下の出力セクションは、Web ページを PC から開いた場合を示しています。Web ページを右クリックすると、レスポンシブデザインモードで要素を検査することができます。そこで、さまざまなモバイルデバイスを選択して、スクリプトを更新できます。モバイルデバイスを選択すると、出力がモバイルデバイスが検出されました
に変わります。このようにして、Mobile Detect
クラスを使用して、PHP でモバイルデバイスを検出できます。
サンプルコード:
require_once "vendor/autoload.php";
$detect = new Mobile_Detect;
if ( $detect->isMobile() ) {
echo "Mobile device detected";
}
else {
echo "Mobile device not detected";
}
?>
出力:
Mobile device not detected
PHP で HTTP_USER_AGENT
と preg_match()
関数を使用してモバイルデバイスを検出する
文字列 HTTP_USER_AGENT
を使用して、Web サイトにアクセスするためのユーザーのブラウザに関する情報を取得できます。$_SERVER
スーパーグローバル変数と文字列を配列要素として使用します。スーパーグローバル変数には、Web サーバーに関する情報が含まれています。モバイルデバイスにあるユーザーエージェント文字列のカスタムコレクションを作成します。次に、preg_match()
関数を使用して、現在のユーザーが閲覧しているブラウザとそれらが一致するかどうかを確認できます。ユーザーエージェント文字列のコレクションは、サポートされている新しいモバイルデバイスのリリースとともに手動で追加できます。ユーザーエージェント文字列の更新されたコレクションのリストはここにあります。
たとえば、変数 $user_agent
を作成し、その中に $_SERVER["HTTP_USER_AGENT"]
を格納します。次に、preg_match()
関数を使用して、ユーザーエージェント文字列を照合します。文字列のコレクションを最初のパラメーターとして使用します。2 番目のパラメーターとして $user_agent
変数を使用します。最後に、if-else
条件を使用してそれに応じてメッセージを表示します。
ここでは、iPhone から Web ページを開きました。したがって、user-agent 文字列はコレクションと一致します。このようにして、PHP でモバイルデバイスを検出できます。
サンプルコード:
$user_agent = $_SERVER["HTTP_USER_AGENT"];
if(preg_match("/(android|webos|avantgo|iphone|ipod|ipad|bolt|boost|cricket|docomo|fone|hiptop|opera mini|mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i",$user_agent ))
{
echo "mobile device detected";
}
else{
echo "mobile device not detected";
}
出力:
Mobile device detected
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn