Get browser: примеры (PHP)
get_browser(?string $user_agent = null, bool $return_array = false): object|array|falseФункция get_browser() в PHP возвращает информацию о возможностях браузера пользователя на основе анализа строки пользовательского агента. Она используется для адаптации вывода веб-страниц под конкретные браузеры, определения поддержки определенных технологий или создания статистики.
Функция принимает два необязательных параметра:
- user_agent (string|null) - строка пользовательского агента. Если передано null, используется значение из $_SERVER['HTTP_USER_AGENT']. Можно передать конкретную строку для анализа.
- return_array (bool) - определяет формат возвращаемых данных. При false (по умолчанию) возвращается объект, при true - ассоциативный массив.
Для корректной работы требуется актуальный файл browscap.ini, путь к которому задается в php.ini директивой browscap.
$browser = get_browser();
var_dump($browser);object(stdClass)#1 (38) {
["browser_name_regex"]=> string(99) "~^mozilla/5\.0 \(.*windows nt 10\.0.*\) applewebkit.*\(khtml, like gecko\).*chrome/.*safari/.*$"
["browser_name_pattern"]=> string(73) "Mozilla/5.0 (*Windows NT 10.0*) AppleWebKit* (KHTML, like Gecko)*Chrome/*Safari/*"
["parent"]=> string(11) "Chrome 110.0"
["platform"]=> string(7) "Win10"
["browser"]=> string(6) "Chrome"
["version"]=> string(6) "110.0"
["majorver"]=> string(3) "110"
["minorver"]=> string(1) "0"
...
}$browser = get_browser(null, true);
echo $browser['browser'] . ' ' . $browser['version'];Chrome 110.0
$ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15';
$browser = get_browser($ua);
echo $browser->platform . ' - ' . $browser->browser;iOS - Safari
Прямых аналогов get_browser() в стандартной библиотеке PHP нет. Однако для отдельных задач можно использовать:
Функция getenv('HTTP_USER_AGENT') возвращает строку пользовательского агента для последующего самостоятельного разбора.
Библиотеки вроде mobiledetect/mobiledetectlib предлагают более легковесное определение мобильных устройств без файла browscap.ini. Они предпочтительны при необходимости только определить тип устройства.
// В php.ini не задана директива browscap
$browser = get_browser();
var_dump($browser);bool(false)
При использовании старого browscap.ini функция может не распознавать новые браузеры, возвращая некорректные данные или false.
$browser = get_browser('Invalid User Agent String');
var_dump($browser);object(stdClass)#1 (38) {
["browser_name_regex"]=> NULL
["browser_name_pattern"]=> NULL
["parent"]=> string(13) "Default Browser"
...
}В PHP 8.1 параметр return_array стал необязательным и по умолчанию равен false. Ранее требовалось явно передавать false для получения объекта. Также улучшена обработка ошибок при отсутствии файла browscap.ini.
// PHP 8.0 и ранее
$browser = get_browser(null, false);
// PHP 8.1+
$browser = get_browser(); // то же самое$browser = get_browser();
if ($browser->browser === 'IE' && $browser->majorver < 11) {
echo 'Ваш браузер устарел. Рекомендуем обновить.';
} else {
echo 'Добро пожаловать!';
}Добро пожаловать!
$browser = get_browser(null, true);
if ($browser['javascript'] == 1) {
echo 'Браузер поддерживает JavaScript';
} else {
echo 'JavaScript не поддерживается';
}Браузер поддерживает JavaScript
$browser = get_browser();
$mobileDevices = ['Android', 'iPhone', 'Windows Phone'];
if (in_array($browser->platform, $mobileDevices) || $browser->ismobiledevice == 1) {
header('Location: /mobile/');
}$browser = get_browser(null, true);
$logData = [
'date' => date('Y-m-d'),
'browser' => $browser['browser'] . ' ' . $browser['version'],
'platform' => $browser['platform'],
'cookies' => $browser['cookies'] ? 'Yes' : 'No'
];
file_put_contents('stats.log', json_encode($logData) . "\n", FILE_APPEND);from ua_parser import user_agent_parser
result = user_agent_parser.Parse(
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
)
print(result['user_agent']['family'], result['user_agent']['major'])Chrome 110
const parser = new UAParser();
const result = parser.getResult();
console.log(result.browser.name, result.browser.version);Chrome 110.0.0.0
Внешние библиотеки обычно не требуют отдельного файла конфигурации, как browscap.ini в PHP. Они чаще обновляются и имеют более узкую специализацию.