如何在CakePHP3请求中获取浏览器名称?

如何在CakePHP3请求中获取浏览器名称?,php,cakephp-3.0,Php,Cakephp 3.0,我需要在我的web应用程序中获取请求浏览器名称。(用于分析) 在核心php中,当我使用$visitor\u user\u agent=$\u SERVER['HTTP\u user\u agent']时,它返回Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/43.0.2357.130 Safari/537.36字符串,然后与Chrome一起使用preg\u match('/Chrome/I',$vis

我需要在我的web应用程序中获取请求浏览器名称。(用于分析)

在核心php中,当我使用
$visitor\u user\u agent=$\u SERVER['HTTP\u user\u agent']
时,它返回
Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/43.0.2357.130 Safari/537.36
字符串,然后与Chrome一起使用
preg\u match('/Chrome/I',$visitor\u user\u agent)
可以用来知道它是否是chrome。我不确定这是否是查找浏览器名称的有效方法

我也找到了链接,但它没有给出浏览器名称


在cakephp3或core php中是否有获取浏览器名称的方法?

这将返回用于请求的用户代理:

$this->request->header('User-Agent');

查看
请求的对象

您可以使用
env()
方法获取
HTTP\u USER\u AGENT

$this->request->env('HTTP_USER_AGENT');
您还可以准备自定义探测器:

$this->request->addDetector(
    'chrome',
    ['env' => 'HTTP_USER_AGENT', 'pattern' => '/Chrome/i']
);
然后在控制器中只需使用
is()
方法,如下所示:

if($this->request->is('chrome')) {
    // do stuff for chrome
}

因此,基本上,逻辑与我在上面的核心php中解释的相同,但它是cakephp3的实现方式。
env()
不推荐使用。改用
getEnv()