PR
PHP
更新:2024/11/17

phpでスマホかPCか判定する方法 ~ユーザーエージェント~

今回は、phpでスマホかPCか判定するために、ユーザーエージェントを用います。

1. 関数

1.1. ユーザーエージェントを判定する関数

function is_mobile() {
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $mobile_agents = array('Mobile', 'Android', 'Silk/', 'Kindle', 'BlackBerry', 'Opera Mini', 'Opera Mobi');

    foreach ($mobile_agents as $agent) {
        if (strpos($user_agent, $agent) !== false) {
            return true;
        }
    }

    return false;
}

まず、ユーザーエージェントをチェックする関数を作成します。

$_SERVER[‘HTTP_USER_AGENT’]は、PHPのスーパーグローバル変数の一つです。この変数は、クライアントがサーバーに送信するユーザーエージェント文字列を返します。ユーザーエージェント文字列は、クライアントのブラウザ、オペレーティングシステム、その他の情報を識別するための文字列です。この文字列に対して、スマホの場合に含まれる可能性のある文字列の配列mobile_agentsを作り、strposを使い、部分的に文字列が一致するかどうか判定し、ユーザーエージェントからスマホかPCか判定します。

1.2. _SERVER[‘HTTP_USER_AGENT’]の中身

_SERVER[‘HTTP_USER_AGENT’]の中身をechoを使って実際に確認してみましょう。

echo $_SERVER['HTTP_USER_AGENT']

  • ブラウザはMozilla互換(実際にはGoogle Chrome)です。
  • オペレーティングシステムはWindows 10です。
  • ブラウザのエンジンはWebKitをベースにしています。
  • ChromeのバージョンはChrome/115.0.0.0です。

開発者ツールでスマホにして表示した場合

2. 実行

以下のように、関数を使ってユーザーエージェントから、PCかスマホか判定します。

if (is_mobile()) {
    // スマホ用のコンテンツを表示
    echo "スマホかも";
} else {
    // PC用のコンテンツを表示
    echo "PCかも";
}

開発者ツールを使って確認すると以下のようになります。

PR