0

我需要使用 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”?

4

2 回答 2

1

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

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

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

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

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

你可以在这里测试一下。

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

于 2012-08-08T18:58:51.377 回答
0
  1. 只要chrome不改变他们的UA,你就没事。
  2. 添加:

    $match = $match[1];

于 2012-08-08T18:34:40.687 回答