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

Regular expression to parse useragent string

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

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

我想知道"Safari/"(417.9.3)之后的内容,但是:

  • "safari"字符串可以是任何字符大小写,也可以是字符串中的任何内容。
  • 版本与"Safari"之间用"/"、"/"、"/"、"/"、"/"或任何空格分隔。
  • 版本字符串以任何空格、")"、"("、";"或字符串结尾结尾。
  • 有人能帮我建立这个吗?

    谢谢!


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

    末尾的i表示"不区分大小写",这符合标准1。

    (\s+|\s*/\s*)?至少匹配一个空格字符,或者匹配前面和后面任意数量的空格字符(从零到无穷大或更大)的斜线,它处理条件2。

    [^)(;]+将尽可能多地匹配不在集合内的字符,该集合处理标准3。


    这不是你以前要求的火狐Regex吗?

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