PHP获取客户端操作系统,游览器类型及版本号
2019独角兽企业重金招聘Python工程师标准>>>
<?php
/*** 客户端工具类** For example:** clientUtil::getBrowser($_SERVER['HTTP_USER_AGENT'],'是否显示版本号') //获取客户端游览器类型和版本号* clientUtil::getPlatForm($_SERVER['HTTP_USER_AGENT],'是否显示版本号') //获取客户端操作系统和版本号** @author 2016-01-23*/
class clientUtil {/*** 各类主流游览器正则 * @var array* @author 2016-01-22*/protected static $browsers = array('Edge' => 'Edge','IE' => 'MSIE|IEMobile|MSIEMobile|Trident/[.0-9]+','Chrome' => '(?:\bCrMo\b|CriOS|Android)?.*Chrome/[.0-9]* (Mobile)?','Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+|Coast/[0-9.]+','Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile','Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari','UCBrowser' => 'UC.*Browser|UCWEB', //UC游览器'QQBrowser' => 'MQQBrowser|TencentTraveler', //QQ游览器'The world' => 'The world', //世界之窗游览器'Maxthon' => 'Maxthon', //遨游游览器'baiduboxapp' => 'baiduboxapp','baidubrowser' => 'baidubrowser','NokiaBrowser' => 'Nokia',);/*** 操作系统正则* note:移动设备的系统需优先匹配* 故正则需要放在电脑系统前面* @var array* @author 2016-01-23*/protected static $platforms = array('iOS' => '\biPhone.*Mobile|\biPod|\biPad','Windows Mobile OS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window Mobile|Windows Phone [0-9.]+|WCE;','Windows Phone OS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;','Android' => 'Android','BlackBerry OS' => 'blackberry|\bBB10\b|rim tablet os', //黑莓'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', //塞班'webOS' => 'webOS|hpwOS','MicroMessenger' => 'MicroMessenger', //微信'Windows' => 'Windows','Windows NT' => 'Windows NT','Mac OS X' => 'Mac OS X','Ubuntu' => 'Ubuntu','Linux' => 'Linux','Chrome OS' => 'CrOS',);/*** 版本号匹配正则(游览器 + 操作系统)* @var array* @author 2016-01-22*/protected static $versionRegexs = array(// Browser'Maxthon' => 'Maxthon [VER]', //遨游'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'), //谷歌'Firefox' => 'Firefox/[VER]', //火狐'Fennec' => 'Fennec/[VER]', //火狐'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'rv:[VER]'),'Opera' => array('OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]', 'Opera [VER]'),'UC Browser' => 'UC Browser[VER]', //UC'QQBrowser' => array('MQQBrowser/[VER]','TencentTraveler/[VER]'), //QQ'MicroMessenger'=> 'MicroMessenger/[VER]', //微信'baiduboxapp' => 'baiduboxapp/[VER]', //百度盒子'baidubrowser' => 'baidubrowser/[VER]', //百度'Safari' => array('Version/[VER]', 'Safari/[VER]' ), //Mac OS X中的浏览器'NokiaBrowser' => 'NokiaBrowser/[VER]', //诺基亚// OS'iOS' => '\bi?OS\b [VER][ ;]{1}','BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'), //黑莓手机'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),'Windows Phone' => 'Windows Phone [VER]','Windows NT' => 'Windows NT [VER]','Windows' => 'Windows NT [VER]','SymbianOS' => array('SymbianOS/[VER]', 'Symbian/[VER]'), //塞班系统'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'), //LG'Mac OS X' => 'MAC OS X [VER]', //苹果系统'BlackBerry OS' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),'Android' => 'Android [VER]','Chrome OS' => 'CrOS x86_64 [VER]',);/*** 获取客户端游览器* @param $userAgent $_SERVER['HTTP_USER_AGENT']* @param bool $isReTurnVersion //是否一起返回版本号* @return string (类型 + 版本号)* @author 2016-01-23*/public static function getBrowser($userAgent,$isReTurnVersion = false) {if(empty($userAgent)) {return '';}$clientBrowser = '';foreach((array)self::$browsers as $key => $browser) {if(self::match($browser,$userAgent)) {$clientBrowser = $key;break;}}if($isReTurnVersion && $clientBrowser) {$clientBrowser .= ' '.self::getVersion($clientBrowser,$userAgent);}return $clientBrowser;}/*** 获取客户端操作系统* @param $userAgent* @param bool $isReTurnVersion //是否一起返回版本号* @return string* @author 2016-01-23*/public static function getPlatForm($userAgent,$isReTurnVersion = false) {if(empty($userAgent)) {return '';}$clientPlatform = '';foreach((array)self::$platforms as $key => $platform) {if(self::match($platform,$userAgent)) {$clientPlatform = $key;break;}}if($isReTurnVersion && $clientPlatform) {$clientPlatform .= ' '.self::getVersion($clientPlatform,$userAgent);}return $clientPlatform;}/*** 查询版本号* @param $propertyName (操作系统名称和或游览器名称)* @see self::$versionRegexs* @param $userAgent* @return string* @author 2016-01-22*/public static function getVersion($propertyName,$userAgent) {$verRegex = array_key_exists($propertyName,self::$versionRegexs)? self::$versionRegexs[$propertyName] : null;if(!$verRegex) {return '';} else {$verRegex = (array)$verRegex;}$match = self::matchVersion($verRegex,$userAgent); //开始匹配if($match && stripos($propertyName,'window') !== false) { //windown系统版本号需要转换return self::getWinVersion($match);} else {return str_replace('_','.',$match);}}/*** 根据匹配结果转换window系统版本号* @param $match* @return string* @author 2016-01-22*/protected static function getWinVersion($match) {if($match == '6.0') {return 'Vista';}else if($match == '6.1') {return '7';}else if($match == '6.2') {return '8';}else if($match == '5.1') {return 'XP';}}/*** 正则匹配* @param array $regex* @param $userAgent* @return string* @author 2016-01-22*/protected static function match($regex,$userAgent) {return (bool)preg_match(sprintf('#%s#is',$regex),$userAgent,$matches);}/*** 版本号正则匹配* @param array $regexs* @param $userAgent* @return string* @author 2016-01-22*/protected static function matchVersion($regexs,$userAgent) {foreach((array)$regexs as $regex) {$regex = str_replace('[VER]','([\w\.]+)', $regex);$match = (bool)preg_match(sprintf('#%s#is',$regex),$userAgent,$matches);if($match) {return $matches[1];}}return '';}}
转载于:https://my.oschina.net/wuzhencan/blog/608258
PHP获取客户端操作系统,游览器类型及版本号相关推荐
- php 获取客户端版本,PHP获取客户端操作系统,游览器类型及版本号
'Edge', 'IE' => 'MSIE|IEMobile|MSIEMobile|Trident/[.0-9]+', 'Chrome' => '(?:\bCrMo\b|CriOS|And ...
- php 获取agent,PHP代码 解析HTTP_USER_AGENT 获取客户端操作系统
** * 获取客户端操作系统信息包括win10 * @param null * @author Jea杨 * @return string */ function GetOS(){ $agent ...
- C++|Java混合实验-Spring Boot获取客户端操作系统,浏览器,Ip等信息,Qt端展示
目录 概述 演示 源码 概述 这里用Spring Boot控制"/"和"index.html"请求,获取客户端http的信息: Qt端使用QML和C++混合编程 ...
- ecshop获取客户端操作系统
<?php /*** 获得客户端的操作系统** @access private* @return void*/ function get_os() {if (empty($_SERVER['HT ...
- 提取谷歌游览器Cookie的五重境界
经常玩爬虫的童鞋都知道cookie的重要性,目前为止大部分网站都仍然使用cookie标识登录状态,只有少部分网站升级到使用jwt记录登录状态. 提取cookie作用不言而喻,那么提取cookie有哪些 ...
- (四)PHP解析HTTP_USER_AGENT 获取客户端手机型号
/*** 获取客户端手机型号* @param $agent //$_SERVER['HTTP_USER_AGENT']* @return array[mobile_brand] 手机品牌* @retu ...
- 通过jsp获取客户端的IP以及通过js检测浏览器类型
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真 ...
- .NET 获取客户端的操作系统版本、浏览器版本和IP地址
我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...
- JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)
//平台.设备和操作系统var system ={win : false,mac : false,xll : false};//检测平台var p = navigator.platform;syste ...
最新文章
- 1号店11.11:从应用架构落地点谈高可用高并发高性能
- 图像处理算法打包成dll
- python学习笔记(字典)
- 以独占方式锁定此配置文件失败.另一个正在运行_JVM深入解析:运行时数据区+HotSpot+JMM+堆+GC+JVM优化+类加载
- Java lamda表达式快速分组
- 十、eclipse快捷键大全
- linux挂载ntfs分区报错,Linux下挂载NTFS分区和挂载分区的方法
- 生成clr库_如何使用CLR存储过程发送数据库邮件
- 柔性穿刺针有限元模型
- 蓝屏死机(blue screen of death)
- 浏览器对视频格式的支持
- 虚拟机可以做成存储服务器吗,利用win10自带虚拟机功能轻松打造家用nas
- 华为MPLS L2xxx(PWE3)+静动混合多跳PW实验
- 电商项目如何解决线上优惠券超发(排错+解决方案)(荣耀典藏)
- 更正:解决报告无法下载的问题-跟国家虚拟仿真实验平台对接上传附件接口遇到的问题
- Macbook系统清理的两种方式
- 技术贴_关于某信辅助分析记录和若干检测方法
- 领域搜索算法java_使用JAVA实现算法——禁忌搜索算法解决TSP问题
- java_Eclipese使用
- 你需要提供管理员权限才能删除文件夹