W3docs

get_browser()

Функция get_browser() в PHP получает информацию о браузере пользователя на основе заголовка HTTP User-Agent.

Функция PHP get_browser()

Функция get_browser() в PHP используется для получения информации о браузере пользователя, которая определяется на основе HTTP-заголовка User-Agent, отправляемого браузером клиента на сервер.

Синтаксис

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

Функция get_browser() принимает два необязательных параметра:

  • $user_agent: string, задающий User-Agent для разбора. Если параметр опущен (или равен null), функция использует User-Agent текущего запроса из $_SERVER['HTTP_USER_AGENT'].
  • $return_array: boolean. Если равен true, функция возвращает ассоциативный array свойств браузера. Если равен false (по умолчанию), возвращается object с теми же данными в виде свойств.

Возвращаемое значение: object или array возможностей браузера, либо false при ошибке.

Предварительное условие: browscap.ini

get_browser() самостоятельно ничего не определяет — она ищет User-Agent в базе данных возможностей браузера под названием browscap.ini. Необходимо скачать этот файл и указать на него в php.ini с помощью директивы browscap:

; in php.ini
browscap = /path/to/browscap.ini

Без этой директивы функция возвращает false и выдаёт предупреждение. Поскольку таблица поиска велика и требует разбора, вызов get_browser() создаёт заметные накладные расходы — именно поэтому современные приложения стараются её избегать.

Возврат array

Передайте true в качестве второго аргумента, чтобы получить ассоциативный array. Это наиболее удобная форма для перебора или просмотра с помощью print_r():

<?php
$browser = get_browser(null, true);
print_r($browser);
?>

Типичный (сокращённый) результат для запроса из Chrome на рабочем столе выглядит так:

Array
(
    [browser_name_pattern] => *mozilla/5.0 (*windows nt 10.0*) applewebkit*chrome*
    [parent]    => Chrome 120.0
    [platform]  => Win10
    [browser]   => Chrome
    [version]   => 120.0
    [majorver]  => 120
    [minorver]  => 0
    [cookies]   => 1
    [javascript] => 1
    [frames]    => 1
    ...
)

Распространённые ключи включают browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables и регулярное выражение для сопоставления browser_name_pattern. Булевы возможности возвращаются в виде строк "1" (true) или "0"/пустая строка (false).

Возврат object (по умолчанию)

Если второй аргумент опущен, возвращается object, и возможности читаются как свойства:

<?php
$browser = get_browser();
echo "Browser: {$browser->browser}\n";
echo "Version: {$browser->version}\n";
echo "Platform: {$browser->platform}\n";
?>

Формирование читаемого сообщения

<?php
$browser = get_browser(null, true);
echo "You are using " . $browser['browser']
   . " version " . $browser['version']
   . " on " . $browser['platform'] . ".";
?>

Результат будет выглядеть примерно как You are using Chrome version 120.0 on Win10., основываясь на заголовке User-Agent HTTP-ответа запроса.

Разбор конкретного User-Agent

Необязательно опираться на текущий запрос — можно передать любую строку User-Agent самостоятельно, что удобно для тестирования или анализа логов:

<?php
$ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15";
$browser = get_browser($ua, true);
echo $browser['platform'];   // e.g. iOS
?>

Защита от сбоя

Поскольку функция возвращает false, если browscap не настроен, всегда проверяйте результат перед чтением свойств:

<?php
$browser = get_browser(null, true);

if ($browser === false) {
    // Fall back to the raw header
    echo $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown browser';
} else {
    echo $browser['browser'] . ' ' . $browser['version'];
}
?>

Заключение

Функция get_browser() — полезный инструмент для получения информации о браузере пользователя в PHP, который можно применять для оптимизации пользовательского опыта или в целях отладки. Важно учитывать, что функция зависит от заголовка User-Agent, отправляемого браузером, который может быть изменён пользователем или злоумышленником. Поэтому информацию, возвращаемую функцией, следует считать потенциально ненадёжной и не использовать в целях безопасности. Кроме того, из-за накладных расходов на производительность и необходимости внешнего файла browscap.ini современные приложения нередко предпочитают разбирать заголовок User-Agent напрямую или использовать специализированные библиотеки.

Связанные функции

Практика

Практика
Какова функция get_browser() в PHP?
Какова функция get_browser() в PHP?
Was this page helpful?