当前位置: 首页 > 知识库问答 >
问题:

无法将Opera作为浏览器获取

慎俊雄
2023-03-14

我有这个代码来获取用户使用的浏览器

$browserArray = array(
    'Windows Mobile' => 'IEMobile',
    'Android Mobile' => 'Android',
    'iPhone Mobile' => 'iPhone',
    'Firefox' => 'Firefox',
    'Opera' => 'OPR',
    'Google Chrome' => 'Chrome',
    'Internet Explorer' => 'MSIE',
    'Opera' => 'Opera',
    'Safari' => 'Safari'
); 
foreach ($browserArray as $k => $v) {

if (preg_match("/$v/", $agent)) {
     break;
}   else {
 $k = "Unknown";
}
} 
$browser = $k;

但是我不能得到歌剧,它返回歌剧作为Chrome。

Opera的代理是“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68”

我怎样才能让歌剧是歌剧而不是Chrome?

共有2个答案

陶山
2023-03-14

更简单的方式:

print_r(get_browser());

类似这样的输出:

    Array
    (
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)
赫连瀚
2023-03-14

在数组声明中有两个Opera键:

'Opera' => 'OPR',
'Opera' => 'Opera',

第二种方法是覆盖firs,因此实际上您的数组如下所示:

$browserArray = array(
    'Windows Mobile' => 'IEMobile',
    'Android Mobile' => 'Android',
    'iPhone Mobile' => 'iPhone',
    'Firefox' => 'Firefox',
    'Opera' => 'Opera',
    'Google Chrome' => 'Chrome',
    'Internet Explorer' => 'MSIE',
    'Safari' => 'Safari'
);  

因此,您缺少OPR标识符,Chrome与您的代理匹配。

 类似资料:
  • 问题内容: 我正在Windows 7上运行Selenium Standalone Server 2.25,并将Internet Explorer 9作为浏览器,对于需要打开浏览器的每个测试,都会遇到此错误: 我究竟做错了什么?完全相同的信息出现在Selenium Server控制台上。 问题答案: 为Internet Explorer中的所有区域启用“保护模式”设置后,错误消失(工具> Inter

  • 无壳浏览器 无壳浏览器是指没有图形用户界面的 Web 浏览器. 无壳浏览器拥有一个和受欢迎的 Web 浏览器相似的环境, 并提供了网页的自动化控制, 但要通过命令行接口或使用网络通信工具执行. 对于测试网页, 无壳浏览器是非常有用的, 因为和普通浏览器一样, 它们能渲染和理解 HTML, 包括样式元素, 如: 页面布局, 颜色, 字体选择, JavaScript 的执行和 AJAX, 但是当使用其

  • 好吧,我知道有很多关于这个的问题和答案,但我真的没有任何运气。我有一个多类、多包程序,它也使用一些外部库(作为jar文件)。我也将我的项目导出为jar文件,下面是我的“index.html”,它引用了必要的库和我的jar文件。所有这些文件都放在同一个目录中,我可以在我的网页上看到小程序:http://easlnx01.eas.muohio.edu/~whitetc2/Twitter挖掘2/ 我的主

  • 我试图在一些servlet和jsp之间添加一个过滤器,以便在显示jsp之前登录的用户。问题是,我试图检索浏览器的网址,这是转发到登录页面,但我找不到如何。我尝试在过滤器中获取URI,并将其作为请求的属性发送给Connexion servlet,但是,它不起作用。

  • 问题内容: 我有5个FF,Chrome,IE,Opera和Safari插件/扩展程序。 如何识别用户浏览器并重定向(一旦单击安装按钮)下载相应的插件? 问题答案: 谷歌浏览器可靠检测通常会导致检查用户代理字符串。这种方法不可靠,因为欺骗这个值很简单。 仅在确实需要时才使用浏览器检测方法,例如显示特定于浏览器的安装扩展说明。尽可能使用特征检测。 可靠性分析 在先前的方法依赖于渲染引擎的性质来检测浏览