PHP中的HTTP_USER_AGENT称为Mozilla for IE

时间:2017-02-03 15:26:42

标签: php internet-explorer firefox browser

我需要能够在PHP脚本中指定IE 11和Firefox。我有以下功能。但是,在IE中它返回Mozilla。还有另一种方法来区分Firefox和IE吗?

function browser() {
 $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
 // you can add different browsers with the same way ..
 if(preg_match('/(chromium)[ \/]([\w.]+)/', $ua))
         $browser = 'chromium';
 elseif(preg_match('/(chrome)[ \/]([\w.]+)/', $ua))
         $browser = 'chrome';
 elseif(preg_match('/(safari)[ \/]([\w.]+)/', $ua))
         $browser = 'safari';
 elseif(preg_match('/(opera)[ \/]([\w.]+)/', $ua))
         $browser = 'opera';
 elseif(preg_match('/(msie)[ \/]([\w.]+)/', $ua))
         $browser = 'msie';
 elseif(preg_match('/(mozilla)[ \/]([\w.]+)/', $ua))
         $browser = 'mozilla';

 preg_match('/('.$browser.')[ \/]([\w]+)/', $ua, $version);
 return array($browser,$version[2],'name'=>$browser,'version'=>$version[2]);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

Internet Explorer 11不包含“MSIE”字符串,因为他们不希望人们认为它与旧版本的IE存在相同的问题。

您可以添加以下行:

elseif(preg_match('/(trident)[ \/]([\w.]+)/', $ua))
    $browser = 'msie';
elseif(preg_match('/(firefox)[ \/]([\w.]+)/', $ua))
    $browser = 'firefox';

每个网络浏览器的用户代理字符串中都会包含单词“Mozilla”(它可以追溯到Netscape时代。)