Відмінності в сучасних браузерах, часом змушують вдаватися до використання фіксів, щоб деякі елементи сайту відображалися всюди коректно. Найчастіше досить завантаження потрібного набору стилів, але бувають ситуації, що виникають як правило рідко, коли потрібно дізнатися тип браузера і його версію десь в коді 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-доступ до вашого сервера, то вам знадобиться:- скачати сам файл browscap.ini
- відредагувати php.ini, внісши в нього дві нові рядки:
Використання browscap.ini без доступу до конфігу php.ini - призначена для користувача функція get_browser ()
Парсинг $ _SERVER [ 'HTTP_USER_AGENT']
У разі якщо немає можливості використовувати функцію get_browser () або бажання прикручувати сторонню бібліотеку - можна вивудити потрібні дані використовуючи нескладне регулярний вираз і функцію preg_match ().
Ось така простенька функція легко визначить будь-який з популярних браузерів і його версію:
Підправивши регулярний вираз можна отримати і більше даних.