您好心地向我提供了有问题的移动 Opera 浏览器的示例 UA 字符串:
Mozilla/5.0 (Linux; Android 4.1.2; GT-P3100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.81 Safari/537.36 OPR/28.0.1764.90386
get_browser()
并且该UA返回的正则表达式是:
$^mozilla/5.0 (.* linux.android.4.1 . ) applewebkit/.* (khtml, like gecko).*chrome/41.. safari/. $
它根本没有检测到 Opera 浏览器。但是,我发现您也可以运行此函数来获取浏览器名称。第一个检查是针对 UA 字符串的那个“ OPR/ ”片段。
当使用上面提供的测试 UA 运行时,输出为“Opera”。
<?php
function ExactBrowserName() {
$ExactBrowserNameUA=$_SERVER['HTTP_USER_AGENT'];
If (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")) {
// OPERA
$ExactBrowserNameBR="Opera";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "chrome/")) {
// CHROME
$ExactBrowserNameBR="Chrome";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "msie")) {
// INTERNET EXPLORER
$ExactBrowserNameBR="Internet Explorer";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "firefox/")) {
// FIREFOX
$ExactBrowserNameBR="Firefox";
} ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")==false and strpos(strtolower($ExactBrowserNameUA), "chrome/")==false) {
// SAFARI
$ExactBrowserNameBR="Safari";
} Else {
// OUT OF DATA
$ExactBrowserNameBR="OUT OF DATA";
};
return $ExactBrowserNameBR;
}
?>
参考:如何获得准确的浏览器名称和版本?