用户代理,从字符串中提取操作系统和浏览器
Posted
技术标签:
【中文标题】用户代理,从字符串中提取操作系统和浏览器【英文标题】:User agent, extract OS and browser from string 【发布时间】:2012-03-30 10:00:35 【问题描述】:我想从用户代理字符串中提取完整的操作系统名称和浏览器。我该怎么做?
【问题讨论】:
我建议查看github.com/dmolsen/ua-parser-php 之类的东西来实现这一目标 【参考方案1】:PHP 中还有一个内置函数可以实现这一点以及更多功能:get_browser()
。
$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version
【讨论】:
【参考方案2】:@augustknight:注意,IE11 不发送“MSIE”令牌,我建议将匹配项添加到 Trident 令牌。
IE 11 用户代理示例:
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
更改代码:
<?php
public static function getUserAgent()
static $agent = null;
if ( empty($agent) )
$agent = $_SERVER['HTTP_USER_AGENT'];
if ( stripos($agent, 'Firefox') !== false )
$agent = 'firefox';
elseif ( stripos($agent, 'MSIE') !== false )
$agent = 'ie';
elseif ( stripos($agent, 'Trident') !== false )
$agent = 'ie';
elseif ( stripos($agent, 'iPad') !== false )
$agent = 'ipad';
elseif ( stripos($agent, 'android') !== false )
$agent = 'android';
elseif ( stripos($agent, 'Chrome') !== false )
$agent = 'chrome';
elseif ( stripos($agent, 'Safari') !== false )
$agent = 'safari';
elseif ( stripos($agent, 'AIR') !== false )
$agent = 'air';
elseif ( stripos($agent, 'Fluid') !== false )
$agent = 'fluid';
return $agent;
?>
【讨论】:
【参考方案3】:我认为获取完整的操作系统名称和完整的浏览器名称很棘手,因为许多浏览器以不同的方式标识自己。您可能需要一些花哨的正则表达式,然后它甚至可能无法 100% 工作。
这是我用来识别浏览器的简单方法。您可以根据自己的需要对其进行调整。
<?php
public static function getUserAgent()
static $agent = null;
if ( empty($agent) )
$agent = $_SERVER['HTTP_USER_AGENT'];
if ( stripos($agent, 'Firefox') !== false )
$agent = 'firefox';
elseif ( stripos($agent, 'MSIE') !== false )
$agent = 'ie';
elseif ( stripos($agent, 'iPad') !== false )
$agent = 'ipad';
elseif ( stripos($agent, 'Android') !== false )
$agent = 'android';
elseif ( stripos($agent, 'Chrome') !== false )
$agent = 'chrome';
elseif ( stripos($agent, 'Safari') !== false )
$agent = 'safari';
elseif ( stripos($agent, 'AIR') !== false )
$agent = 'air';
elseif ( stripos($agent, 'Fluid') !== false )
$agent = 'fluid';
return $agent;
【讨论】:
以上是关于用户代理,从字符串中提取操作系统和浏览器的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:使用 user agent 摄入处理器来丰富数据