Регулярное выражение для разбора строки useragent - PullRequest
2 голосов
/ 02 июля 2010

Мне нужно извлечь данные из строки. Вот пример:

Mozilla / 5.0 (Macintosh; U; PPC Mac OS ИКС; tr-tr) AppleWebKit / 418 (KHTML, например Геккон) Сафари / 417.9.3

Я хочу получить то, что после "Safari /" (417.9.3) , но :

  1. Строка "Safari" может быть в любом символьном случае и может быть в любом месте строки.
  2. Версия отделена от "Safari" символом "/", "/", "/", "/" или любым другим пробелом.
  3. Конец строки версии любым пробелом, ")", "(", ";" или концом строки.

Кто-нибудь может помочь мне построить это?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 02 июля 2010
preg_match("#Safari(\s+|/\s*)([^)(;]+)#i", $_SERVER['HTTP_USER_AGENT'], $results);

i в конце означает «без учета регистра», что соответствует первому критерию.

(\s+|\s*/\s*)? соответствует как минимум одному пробелу или косой черте, перед которыми следует произвольное числоиз пробельных символов (от нуля до бесконечности и далее), что касается критериев два.

[^)(;]+ будет соответствовать как можно большему числу символов, которые не внутри набора, который обращается к критериям три.

0 голосов
/ 02 июля 2010

Разве это не похоже на регулярное выражение Firefox, о котором вы просили раньше?

/Safari[ \/]+([0-9\.]+)/i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...