PHP でモバイルデバイスを検出する

Subodh Poudel 2023年1月30日
  1. PHP で mobiledetect クラスを使用してモバイルデバイスを検出する
  2. PHP で HTTP_USER_AGENTpreg_match() 関数を使用してモバイルデバイスを検出する
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_AGENTpreg_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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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