【PHP8.x】get_browser関数の使い方

作成日: 更新日:

『get_browser関数は、ユーザーのブラウザが持つ機能についての情報を取得する関数です』 この関数は、Webサーバーに送信されるユーザーエージェント文字列を解析し、そのブラウザの種類、バージョン、プラットフォーム、そしてJavaScriptやCookieといった各種機能のサポート状況などを特定します。関数が正しく動作するためには、事前にphp.iniファイルでbrowscapディレクティブを設定し、ブラウザの性能情報がデータベースとして記述されたbrowscap.iniファイルのパスを指定しておく必要があります。引数を指定しない場合、関数は現在リクエストを行っているクライアントのHTTP_USER_AGENTの値を自動的に使用します。第一引数に特定のユーザーエージェント文字列を渡すことで、任意のブラウザ情報を調べることも可能です。第二引数にtrueを指定すると、返り値の形式をデフォルトのオブジェクトから連想配列に変更できます。browscap.iniファイルが設定されていない、またはデータベース内に該当する情報が見つからない場合にはfalseを返します。

基本的な使い方

構文(syntax)

get_browser(?string $user_agent = null, bool $return_array = false): object|array|false

引数(parameters)

?string $user_agent = null, bool $return_array = false

  • ?string $user_agent = null: ブラウザのユーザーエージェント文字列。省略すると、PHPの$_SERVER['HTTP_USER_AGENT']が使用されます。
  • bool $return_array = false: trueを指定すると、ブラウザ情報を連想配列で返します。falseの場合は、オブジェクトで返します。

戻り値(return)

object|array|false

PHPのget_browser関数は、アクセスしてきたユーザーのブラウザに関する情報を取得します。戻り値として、ブラウザの機能やバージョンなどの詳細情報を含むオブジェクトまたは配列が返されます。ブラウザ情報が取得できなかった場合はfalseが返されます。

サンプルコード

PHP get_browser 関数でブラウザ情報を取得する

<?php

/**
 * 現在のブラウザ情報を取得し、表示します。
 *
 * 注意: get_browser関数を使用するには、php.iniでbrowscap設定が必要です。
 * 例: browscap = /path/to/browscap.ini
 * browscap.iniファイルは https://browscap.org/ からダウンロードできます。
 *
 * この関数はブラウザの種類、バージョン、OSなどの情報を取得しますが、
 * ブラウザの言語設定(例: 'en-US', 'ja-JP')は直接取得しません。
 * ブラウザの言語設定は通常、HTTPヘッダーの 'Accept-Language' から取得します。
 */
function displayCurrentBrowserDetails(): void
{
    // 現在のHTTP User-Agentヘッダー文字列を取得します。
    // $_SERVER['HTTP_USER_AGENT'] が存在しない場合を考慮し、デフォルト値を提供します。
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36';

    // get_browser関数を呼び出し、ブラウザ情報を取得します。
    // 第二引数を true にすると、結果がオブジェクトではなく連想配列として返されます。
    $browserInfo = get_browser($userAgent, true);

    if ($browserInfo === false) {
        echo "エラー: ブラウザ情報の取得に失敗しました。\n";
        echo "php.iniの 'browscap' 設定が正しく行われているか確認してください。\n";
        return;
    }

    echo "--- 現在のブラウザ情報 ---\n";
    foreach ($browserInfo as $key => $value) {
        // キーを読みやすい形式に整形し、値を出力します。
        // 値が真偽値の場合は 'Yes' または 'No' で表示します。
        echo sprintf(
            "%s: %s\n",
            str_replace('_', ' ', ucfirst($key)), // 例: 'ismobiledevice' -> 'Ismobiledevice'
            is_bool($value) ? ($value ? 'Yes' : 'No') : $value
        );
    }
    echo "--------------------------\n";
}

// 関数を実行して、現在のブラウザ情報を表示します。
displayCurrentBrowserDetails();

PHPのget_browser関数は、ウェブブラウザの種類、バージョン、OSといった詳細情報を取得する際に利用されます。第一引数$user_agentで解析対象のUser-Agent文字列を任意で指定でき、省略した場合は現在のHTTP User-Agentが使われます。第二引数$return_arraytrueを渡すと、戻り値が連想配列として提供されます。関数は成功するとブラウザ情報をオブジェクトまたは配列で返し、失敗時はfalseを返します。この関数を使うには、php.iniファイルでbrowscap設定を有効にし、browscap.iniファイルのパスを指定する必要があります。サンプルコードでは、現在のUser-Agentを取得し、get_browser関数で情報を取得後、成功時にはその内容を整形して表示しています。情報取得失敗時のエラー処理も記述されています。なお、get_browser関数はブラウザの言語設定(例: 'ja-JP')を直接取得しません。ブラウザの言語設定は通常、HTTPヘッダーのAccept-Languageから取得します。

get_browser関数を利用するには、php.iniファイルでbrowscap設定を行い、browscap.orgからbrowscap.iniファイルをダウンロードして指定する必要があります。この設定がないと関数は正常に動作せず、falseを返しますので、必ずエラーチェックを行ってください。また、この関数はブラウザの種類やOSなどの情報を取得しますが、ブラウザの言語設定は直接取得できません。言語設定は通常、HTTPヘッダーのAccept-Languageから取得しますので、用途に応じて使い分けが必要です。$_SERVER['HTTP_USER_AGENT']は常に存在するとは限らないため、取得できない場合の代替処理も考慮しましょう。第二引数をtrueにすると、結果が連想配列として返され扱いやすくなります。

PHPでユーザーエージェントからブラウザ名を取得する

<?php

/**
 * 現在のユーザーエージェントからブラウザ情報を取得し、主要な情報を表示する関数。
 *
 * 注意: get_browser関数を使用するには、php.iniで'browscap'設定を有効にし、
 * browscap.iniファイルへの正しいパスを指定する必要があります。
 * 例: browscap = "ext/browscap/browscap.ini" (Windowsの場合)
 *     browscap = "/path/to/browscap.ini" (Linuxの場合)
 * この設定がない場合、get_browserはfalseを返すか、期待通りの情報を提供できないことがあります。
 * browscap.iniファイルは http://browscap.org/ からダウンロードできます。
 */
function getAndDisplayBrowserName(): void
{
    // 現在のHTTPリクエストのユーザーエージェント文字列を取得します。
    // コマンドラインから実行する場合やHTTPリクエストがない場合は、
    // デフォルトのテスト用文字列を使用します。
    $userAgent = $_SERVER['HTTP_USER_AGENT'] ?? 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36';

    echo "現在のユーザーエージェント: " . $userAgent . PHP_EOL . PHP_EOL;

    // get_browser関数を呼び出し、ユーザーエージェント情報を解析します。
    // 第2引数をtrueに設定すると、結果が連想配列として返されます。
    $browserInfo = get_browser($userAgent, true);

    // 取得結果がfalseの場合(browscap設定の問題など)
    if ($browserInfo === false) {
        echo "エラー: ブラウザ情報の取得に失敗しました。php.iniのbrowscap設定を確認してください。" . PHP_EOL;
    }
    // ブラウザ情報が配列として正常に取得できた場合
    elseif (is_array($browserInfo)) {
        echo "--- 取得されたブラウザ情報 ---" . PHP_EOL;
        // 特に「ブラウザ名」を表示します。
        echo "ブラウザ名: " . ($browserInfo['browser'] ?? '情報なし') . PHP_EOL;
        echo "バージョン: " . ($browserInfo['version'] ?? '情報なし') . PHP_EOL;
        echo "プラットフォーム: " . ($browserInfo['platform'] ?? '情報なし') . PHP_EOL;
        echo "メジャーバージョン: " . ($browserInfo['majorver'] ?? '情報なし') . PHP_EOL;
        echo "マイナーバージョン: " . ($browserInfo['minorver'] ?? '情報なし') . PHP_EOL;
        echo "ブラウザタイプ: " . ($browserInfo['browser_type'] ?? '情報なし') . PHP_EOL;
    }
}

// 関数を実行してブラウザ情報を表示します。
getAndDisplayBrowserName();

PHPのget_browser関数は、ウェブブラウザがサーバーに送信する「ユーザーエージェント」という文字列を解析し、ブラウザの種類やバージョン、OSなどの詳細な情報を取得するために使用されます。この関数を正しく利用するには、PHPの設定ファイルphp.iniにおいてbrowscapディレクティブを有効にし、http://browscap.org/からダウンロードできる最新のbrowscap.iniファイルへの正しいパスを指定する必要があります。この設定がない場合、関数は期待通りの情報を返さないか、falseを返します。

引数としては、解析したいユーザーエージェント文字列を渡すことができますが、省略した場合は現在のHTTPリクエストのユーザーエージェントが自動的に利用されます。2つ目の引数をtrueに設定すると、結果が連想配列として返され、false(デフォルト)の場合はオブジェクトとして返されます。サンプルコードでは連想配列として取得しています。

戻り値は、情報が正常に取得できた場合は指定に応じたオブジェクトまたは連想配列です。解析に失敗した場合やbrowscap設定が不適切な場合はfalseが返されるため、戻り値がfalseでないかを確認する処理が重要です。サンプルコードでは、現在のユーザーエージェントを取得し、get_browser関数で解析後、ブラウザ名やバージョン、プラットフォームなどの主要な情報を表示しています。

get_browser関数を利用するには、PHPの設定ファイルphp.inibrowscapディレクティブを有効にし、browscap.iniファイルの正しいパスを指定することが必須です。この設定が不足すると、関数はfalseを返し、ブラウザ情報を取得できません。browscap.iniは最新のブラウザ情報を含むため、定期的にダウンロードして更新する必要があります。

関数からの戻り値は、成功時にはオブジェクトまたは配列、失敗時にはfalseです。そのため、常にfalseが返された場合のエラーハンドリングを実装することが重要です。また、ウェブサーバーを介さない実行時には$_SERVER['HTTP_USER_AGENT']が存在しないため、代替のユーザーエージェント文字列を指定する考慮が必要です。取得した情報から特定のキーにアクセスする際は、そのキーが存在するかを??演算子などで確認すると、安全にコードを記述できます。

【PHP8.x】get_browser関数の使い方 | いっしー@Webエンジニア