从用户代理解析镶边版本


Parsing chrome version from user agent

我需要使用PHP查找Chrome版本。

我编码了这个:

$ua = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.60 Safari/537.1";
preg_match( "#Chrome/([0-9]{2})#", $ua, $match );
print_r($match);

其中返回:

Array
(
    [0] => Chrome/21
    [1] => 21
)

我有两个问题:

这适用于所有 chrome 浏览器吗?(因为$ua是我自己的用户代理。

另外,如何制作模式,使其在数组中仅返回"21"而不是"Chrome/21"和"21"?

不适用于所有Chrome浏览器。如果是Chrome版本3怎么办?还是 Chrome 版本 2245?

见我。

我要做的是将您的正则表达式更改为以下内容:

preg_match( "#Chrome/(.+?)'.#", $ua, $match );

这将返回与您现在拥有的内容相同的内容,但它也适用于任何数字版本。

array (
  0 => 'Chrome/21.',
  1 => '21',
)

您可以在此处进行测试。

至于你的第二个问题,你不能修改preg_match()来返回这样的值。不过,简单地设置$match = $match[1]就可以了,而且是完全可以接受的!

  1. 只要 chrome 不改变他们的 UA,你就会没事的。
  2. 加:

    $match = $match[1];