·
войти

Определение браузера и его версии в PHP. HTTP_USER_AGENT и get_browser()

 ← Веб-разработка
UR   ·   12 октября 2012, 17:45
поделиться:

Различия в современных браузерах, порой заставляют прибегать к использованию фиксов, дабы некоторые элементы сайта отображались везде корректно. Чаще всего достаточно загрузки нужного набора стилей, но бывают ситуации, возникающие как правило редко, когда нужно узнать тип браузера и его версию где-то в коде backend'а.

Когда мне, в одной из конструкций кода, понадобилось получить название и версию браузера - подумал что все просто, ведь нужные данные можно получить из переменной $_SERVER['HTTP_USER_AGENT'] или используя родную PHP-функцию get_browser().

Но get_browser() работает не везде. Если в конфигурационном файле php.ini на вашем сервере не прописан путь до файла browscap.ini и самого файла нет, то либо вам это нужно исправить, либо парсить переменную $_SERVER['HTTP_USER_AGENT'] вручную.


Функция get_browser() и файл browscap.ini

browscap.ini - содержит информацию о различных браузерах, а функция get_browser() использует его как некую мини-базу знаний и выдает ответ о браузере и его возможностях в виде объекта или массива со структурированными данными.

Если browscap у вас не установлен и вы имеете root-доступ к вашему серверу, то вам понадобится:

  1. скачать сам файл browscap.ini
  2. отредактировать php.ini, внеся в него две новые строки:
    [browscap]
    browscap = /путь/до/browscap.ini
    

  3. Использование browscap.ini без доступа к конфигу php.ini - пользовательская функция get_browser()

    В сети есть описание способов "эмуляции" функции get_browser(), вот неплохая статья описывающая настройку и использование пользовательской функции get_browser(), используя сторонюю php-библиотеку.


    Парсинг $_SERVER['HTTP_USER_AGENT']

    В случае если нет возможности использовать функцию get_browser() или желания прикручивать стороннюю библиотеку - можно выудить нужные данные используя несложное регулярное выражение и функцию preg_match().

    Вот такая простенькая функция легко определит любой из популярных браузеров и его версию:

    function get_user_browser() {
    	preg_match("/(Opera|Firefox|Chrome|Chromium|Safari|MSIE)[\s\/]?([0-9]+)/", $_SERVER['HTTP_USER_AGENT'], $browser_info);
    
    	$name 		= !empty($browser_info[1])? $browser_info[1] : null;
    	$version 	= !empty($browser_info[2])? $browser_info[2] : null;
    
    	return array('name' => $name, 'version' => $version);
    }
    

    Подправив регулярное выражение можно получить и больше данных.

UR   ·   12 октября 2012, 17:45
поделиться:
Комментарии

Roseann   ·  9 декабря 2013, 07:45

It's good to get a fresh way of loiknog at it. http://ywyfnd.com [url=http://gjyxkyozgq.com]gjyxkyozgq[/url] [link=http://mflzrfz.com]mflzrfz[/link]

Putri   ·  8 декабря 2013, 20:33

My <a href="http://ewxtwyn.com">prlobem</a> was a wall until I read this, then I smashed it.

Fayera   ·  7 декабря 2013, 20:34

Whoa, things just got a whole lot eaiser.

Maha   ·  10 декабря 2013, 07:39

I'm quite pleased with the <a href="http://yauvuwpoen.com">inotmraoifn</a> in this one. TY!

Adipenyok   ·  10 декабря 2013, 14:03

What a plsueare to meet someone who thinks so clearly http://kurnlfwa.com [url=http://zmptwwszi.com]zmptwwszi[/url] [link=http://ngfsie.com]ngfsie[/link]

Метки


Полезное
Флатрия
Флатрия
умный поиск жилья
0.007976