Скрипт для определения браузера пользователя на 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.12Firefox 1.5.0.12Firefox 1.5.0.12
Firefox 3.0.10Firefox 3.0.10Firefox 3.0.10
Firefox 3.6.9Firefox 3.6.9Firefox 3.6.9
Firefox 4.0Firefox 4.0Firefox 4.0
IE 4.01IE 4.01MSIE 4.01
IE 5.5IE 5.5MSIE 5.5
IE 6.0IE 6.0MSIE 6.0
IE 7.0IE 7.0MSIE 7.0
IE 8.0IE 8.0MSIE 8.0
Chrome 5.0.375.127Chrome 5.0.375.127Chrome 5.0.375.127
Chromium 6.0.472.36Chrome 6.0.472.36Chrome 6.0.472.36
Chrome 7.0.517.8Chrome 7.0.517.8Chrome 7.0.517.8
Opera 7.03Opera 7.03MSIE 6.0
Opera 8.0Opera 8.0MSIE 6.0
Opera 8.54Opera 8.54Opera 8.54
Opera 9.50Opera 9.50Opera 9.50
Opera 10.00Opera 10.00Opera 10.00
Opera 10.10Opera 10.10Opera 10.10
Opera 10.61Opera 10.61Opera 10.61
Safari 3.0Safari 3.0Safari 3.0
Safari 4.0Safari 4.0Safari 4.0
Safari 5.0.1Safari 5.0.1Safari 5.0.1
Flock 1.2.6Flock 1.2.6Firefox 2.0.0.17
Epiphany 2.22Epiphany 2.22Firefox 2.0.0.20
Navigator 9.0.0.6Navigator 9.0.0.6Firefox 2.0.0.12
Netscape 8.1.3Netscape 8.1.3Browser based on Gecko
Konqueror 4.4Konqueror 4.4Browser based on Gecko
Galeon 2.0.4Browser based on GeckoBrowser based on Gecko
Iceape 1.1.13Browser based on GeckoBrowser based on Gecko
Iceweasel 3.0.4Iceweasel 3.0.4Browser based on Gecko
SeaMonkey 1.1.14SeaMonkey 1.1.14Browser based on Gecko
Minefield 3.7Minefield 3.7Browser based on Gecko
Avant Browser 7.0Avant Browser based on IE 7.0MSIE 7.0
Camino 2.0.4Camino 2.0.4Firefox 3.0.19

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

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

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

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

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

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

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

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

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

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

Купить хостинг WordPress


Читайте также:

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

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