用于解析useragent字符串的正则表达式

时间:2010-07-02 17:05:27

标签: php regex

我需要从字符串中提取数据。下面是一个例子:

  

Mozilla / 5.0(Macintosh; U; PPC Mac OS   X; tr-tr)AppleWebKit / 418(KHTML,喜欢   Gecko)Safari / 417.9.3

我希望得到“Safari /”之后的内容(417.9.3)但是

  1. “Safari”字符串可以是任何字符大小写,并且可以是字符串中的任何字符串。
  2. 版本通过“/”,“/”,“/”,“/”或任何空格与“Safari”分隔。
  3. 版本字符串以任何空格结尾,“)”,“(”,“;”或字符串的结尾。
  4. 任何人都可以帮我解决这个问题吗?

    谢谢!

2 个答案:

答案 0 :(得分:4)

preg_match("#Safari(\s+|/\s*)([^)(;]+)#i", $_SERVER['HTTP_USER_AGENT'], $results);

最后的i表示“不区分大小写”,它回答了标准一。

(\s+|\s*/\s*)?匹配至少一个空白字符或斜杠,后面跟着任意数量的空白字符(从零到无穷大及以上),它们符合条件二。

[^)(;]+将匹配尽可能多的 not 字符集中的字符,该字符符合条件三。

答案 1 :(得分:0)

这与您之前要求的Firefox正则表达式类似吗?

/Safari[ \/]+([0-9\.]+)/i