Скрипт для определения браузера пользователя на PHP

Недавно для одного интересного проекта мне потребовалось сделать определение браузера и его версии на PHP. Шаблон был адаптивный (responcive), и надо было подстроить под разные браузеры вывод элементов страницы. Сайт я писал на любимом движке WordPress и тема была сверстана под него. Как всегда недолго думая над задачей полез я в Интернет. Мое было удивление когда я нашел готовый скрипт, который полностью меня устроил в первой десятке выдачи google. Респект и уважуха разработчику и блогеру ко

торый этот скрипт написал и выложил у себя на блоге.

Чем он особо мне понравился, так это тем, что скрипт мог определять браузеры на движке Gecko, а не только основные браузеры (Firefox, Chrome, IE, Opera, Safari), и даже те, которые построены на ядре Trident (Maxthon, Avant Browser, MyIE2), и даже старые версии Оперы, маскирующиеся под IE. Кроме того, скрипт находит и отображает версию браузера.

Автор блога выложил некоторые сведения, которые я также хотел бы выложить себе на сайт.

Теория из слов автора:

Как определяется браузер на PHP?
В PHP есть замечательная переменная под названием $_SERVER[‘HTTP_USER_AGENT’].
У меня, например, она выглядит так:

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Отсюда вытащить браузер и версию просто, не так ли?

Теперь IE 6

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Здесь уже немного посложнее, но тоже не должно вызывать особых затруднений.

Opera 10.61

Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.61
Опера приготовила нам подлянку: название браузера в начале, а версия, как это не странно, в конце.

Safari 5.1

Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
Safari тоже удивляет: через слэш идёт вовсе не номер версии. Номер версии идёт чуть раньше.

Chrome 6.0.427.0

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1
Хром вытащить легче, хорошо бы ещё не перепутать его с Safari…

(О том, почему все браузеры (кроме Оперы) называют себя Mozilla можно в простой и увлекательной форме почитать здесь.)

Практика из слов автора

Вы уже узнали, какое разнообразие в строке User-agent предлагают всего лишь пять браузеров.
Но в 9 из 10 случаев нас спасёт следующее регулярное выражение:

После этого во втором элементе массива будет лежать название браузера, а в третьем — его версия.

Исключение представляет лишь Safari начиная с версии 3.0 и Opera начиная с версии 10.00.

Для этих браузеров мы пишем:

И ещё одна строка кода: 

Если мы не смогли определить браузер, но знаем, что он использует ядро Gecko, то выводим сообщение о том, что браузер работает на этом ядре.
Вот, в сущности, и всё содержание первой, более компактной функции по определению браузера.

Её код целиком:

Вот более полная версия, позволяющая определять экзотические, устаревшие, а также те браузеры, которые построены на основе Firefox и IE:

Примеры работы

В таблице приведён результат работы двух функций — в первом столбце браузер, в котором вызывались функции, во втором — ответ функции, учитывающей малоизвестные браузеры, в третьей — результат работы сокращённой функции.

Браузер Результат полной функции Результат сокращённой функц ии
Firefox 1.5.0.12 Firefox 1.5.0.12 Firefox 1.5.0.12
Firefox 3.0.10 Firefox 3.0.10 Firefox 3.0.10
Firefox 3.6.9 Firefox 3.6.9 Firefox 3.6.9
Firefox 4.0 Firefox 4.0 Firefox 4.0
IE 4.01 IE 4.01 MSIE 4.01
IE 5.5 IE 5.5 MSIE 5.5
IE 6.0 IE 6.0 MSIE 6.0
IE 7.0 IE 7.0 MSIE 7.0
IE 8.0 IE 8.0 MSIE 8.0
Chrome 5.0.375.127 Chrome 5.0.375.127 Chrome 5.0.375.127
Chromium 6.0.472.36 Chrome 6.0.472.36 Chrome 6.0.472.36
Chrome 7.0.517.8 Chrome 7.0.517.8 Chrome 7.0.517.8
Opera 7.03 Opera 7.03 MSIE 6.0
Opera 8.0 Opera 8.0 MSIE 6.0
Opera 8.54 Opera 8.54 Opera 8.54
Opera 9.50 Opera 9.50 Opera 9.50
Opera 10.00 Opera 10.00 Opera 10.00
Opera 10.10 Opera 10.10 Opera 10.10
Opera 10.61 Opera 10.61 Opera 10.61
Safari 3.0 Safari 3.0 Safari 3.0
Safari 4.0 Safari 4.0 Safari 4.0
Safari 5.0.1 Safari 5.0.1 Safari 5.0.1
Flock 1.2.6 Flock 1.2.6 Firefox 2.0.0.17
Epiphany 2.22 Epiphany 2.22 Firefox 2.0.0.20
Navigator 9.0.0.6 Navigator 9.0.0.6 Firefox 2.0.0.12
Netscape 8.1.3 Netscape 8.1.3 Browser based on Gecko
Konqueror 4.4 Konqueror 4.4 Browser based on Gecko
Galeon 2.0.4 Browser based on Gecko Browser based on Gecko
Iceape 1.1.13 Browser based on Gecko Browser based on Gecko
Iceweasel 3.0.4 Iceweasel 3.0.4 Browser based on Gecko
SeaMonkey 1.1.14 SeaMonkey 1.1.14 Browser based on Gecko
Minefield 3.7 Minefield 3.7 Browser based on Gecko
Avant Browser 7.0 Avant Browser based on IE 7.0 MSIE 7.0
Camino 2.0.4 Camino 2.0.4 Firefox 3.0.19

Красным цветом отмечены браузеры, которые функция не смогла определить.

А здесь вы можете проверить работу функций в своём браузере.
Надеюсь, что эти функции будут кому-то полезны.
Удачи.

Скачать скрипт для определения браузера можно у меня:

Скрипт определения браузера

или на сайте автора:

https://www.recens.ru/php/detect_user_browser.html

Еще раз отдельное спасибо автору!

Определяем мобильные браузеры

Еще из комментариев на сайте автора нашел, как определить мобильные устройстка:

Возвращает mobile или PC, удачи )


Купить хостинг WordPress
/* Репетитор по wordpress
Услуги репетитора онлайн. Список курсов которые я веду
  • Базовый курс по веб-дизайну;
  • Верстка сайтов;
  • Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
  • Разработка сайтов на PHP.
Подробнее читайте на странице репетитор по WordPress
*/

Николаенко Максим

Директор веб-студии ProGrafika. Занимаюсь разработкой, дизайном и продвижением веб-сайтов. Всегда рад новым читателям блога и хорошим клиентам.


Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Шаблоны для WordPress
Самый лучший хостинг в Украине
Стабильный хостинг для Drupal