从用户代理解析chrome版本

时间:2012-08-08 18:30:36

标签: php regex preg-match 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”?

2 个答案:

答案 0 :(得分:1)

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

请参阅me

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

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

返回与现在相同的内容,但它也适用于任意数字版本。

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

您可以测试此here

至于您的第二个问题,您无法修改preg_match()以返回这样的值。简单地设置$match = $match[1]可以正常工作,并且完全可以接受!

答案 1 :(得分:0)

  1. 只要chrome不改变他们的UA,你就可以了。
  2. 添加:

    $ match = $ match [1];

相关问题