2010-10-20 4 views
1

Я пытаюсь написать класс, который вызывает определенные функции для разных браузеров. Я хочу создать оператор switch, который принимает либо (CHROME, SAFARI, FIREFOX, MSIE и т. Д.), Который вытягивается из обычного выражения.Получение типа браузера с PHP

Я наголен на часть регулярного выражения. Я создал именованные группы, но я не могу понять, как получить указанную группу.

$subject = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.63 Safari/534.3'; 

preg_match('/(?:(?P<CHROME>Chrome)|(?P<MSIE>MSIE)|(?P<IPHONE>iPhone)|(?P<FIREFOX>Firefox)|(?P<SAFARI>Safari))/', $subject, $regs); 

Это то, что я получаю, когда это выполняется.

$regs = Array 
(
    [0] => Chrome 
    [CHROME] => Chrome 
    [1] => Chrome 
) 

Я хочу переключиться с использованием $ regs, но ключи все прикручиваются после регулярного выражения. Правильно ли я это делаю? Как я могу убедить CHROME из ключей в массиве?

+0

Зачем вам нужны ключи вообще? '$ regs [0]' должен содержать согласованный текст, который в вашем случае уже идентифицирует браузер. (Конечно, ответ @ VolkerK гораздо лучший способ сделать это.) – casablanca

+0

Хороший вопрос! Я могу просто сделать str_toupper в $ regs [0] – polyhedron

ответ

6

см get_browser()

Одним из элементов возвращаемого значения browser, который, кажется, что вы ищете.
Вы можете получить обновленную версию browscap.ini (которая содержит шаблоны для идентификации строки браузера/используемого агента) от http://browsers.garykeith.com/downloads.asp

+0

Я изучил это, но некоторые люди говорят, что у него есть куча накладных расходов. – polyhedron

+0

Некоторые люди говорят, что земля плоская. И что? ;-) – VolkerK

+0

Я начал изобретать это колесо, пока не нашел get_browser(), и действительно, я злюсь, теперь я не могу понять это регулярное выражение! Итак, теперь это крестовый поход по поводу обучения регулярному выражению больше, чем выполнение задачи :-). Это действительно сводится к нам, используя имена групп в регулярном выражении. – polyhedron

Смежные вопросы