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获取客户端操作系统,游览器类型及版本号相关推荐

  1. php 获取客户端版本,PHP获取客户端操作系统,游览器类型及版本号

    'Edge', 'IE' => 'MSIE|IEMobile|MSIEMobile|Trident/[.0-9]+', 'Chrome' => '(?:\bCrMo\b|CriOS|And ...

  2. php 获取agent,PHP代码 解析HTTP_USER_AGENT 获取客户端操作系统

    ** * 获取客户端操作系统信息包括win10 * @param  null * @author  Jea杨 * @return string */ function GetOS(){ $agent  ...

  3. C++|Java混合实验-Spring Boot获取客户端操作系统,浏览器,Ip等信息,Qt端展示

    目录 概述 演示 源码 概述 这里用Spring Boot控制"/"和"index.html"请求,获取客户端http的信息: Qt端使用QML和C++混合编程 ...

  4. ecshop获取客户端操作系统

    <?php /*** 获得客户端的操作系统** @access private* @return void*/ function get_os() {if (empty($_SERVER['HT ...

  5. 提取谷歌游览器Cookie的五重境界

    经常玩爬虫的童鞋都知道cookie的重要性,目前为止大部分网站都仍然使用cookie标识登录状态,只有少部分网站升级到使用jwt记录登录状态. 提取cookie作用不言而喻,那么提取cookie有哪些 ...

  6. (四)PHP解析HTTP_USER_AGENT 获取客户端手机型号

    /*** 获取客户端手机型号* @param $agent //$_SERVER['HTTP_USER_AGENT']* @return array[mobile_brand] 手机品牌* @retu ...

  7. 通过jsp获取客户端的IP以及通过js检测浏览器类型

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真 ...

  8. .NET 获取客户端的操作系统版本、浏览器版本和IP地址

    我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...

  9. JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)

    //平台.设备和操作系统var system ={win : false,mac : false,xll : false};//检测平台var p = navigator.platform;syste ...

最新文章

  1. 1号店11.11:从应用架构落地点谈高可用高并发高性能
  2. 图像处理算法打包成dll
  3. python学习笔记(字典)
  4. 以独占方式锁定此配置文件失败.另一个正在运行_JVM深入解析:运行时数据区+HotSpot+JMM+堆+GC+JVM优化+类加载
  5. Java lamda表达式快速分组
  6. 十、eclipse快捷键大全
  7. linux挂载ntfs分区报错,Linux下挂载NTFS分区和挂载分区的方法
  8. 生成clr库_如何使用CLR存储过程发送数据库邮件
  9. 柔性穿刺针有限元模型
  10. 蓝屏死机(blue screen of death)
  11. 浏览器对视频格式的支持
  12. 虚拟机可以做成存储服务器吗,利用win10自带虚拟机功能轻松打造家用nas
  13. 华为MPLS L2xxx(PWE3)+静动混合多跳PW实验
  14. 电商项目如何解决线上优惠券超发(排错+解决方案)(荣耀典藏)
  15. 更正:解决报告无法下载的问题-跟国家虚拟仿真实验平台对接上传附件接口遇到的问题
  16. Macbook系统清理的两种方式
  17. 技术贴_关于某信辅助分析记录和若干检测方法
  18. 领域搜索算法java_使用JAVA实现算法——禁忌搜索算法解决TSP问题
  19. java_Eclipese使用
  20. 你需要提供管理员权限才能删除文件夹

热门文章

  1. 2020 dns排名_2020年最快的dns是多少_动漫台
  2. 用狼的处世哲学做SOHO(一)
  3. 微信小程序 文字下标_微信小程序开发中,怎么给导航栏图标下面加上文本?...
  4. 网络编程:网络协议简介
  5. SQL Server基本操作
  6. C语言课设飞机票订购系统
  7. 最近很火的ChatGPT和GPT4
  8. 云和恩墨荣获阿里云云合计划2021年度优秀伙伴技术先锋奖
  9. ExoPlayer播放器剖析(六)ExoPlayer同步机制分析
  10. 小米watch s2功能介绍 小米watch s2测评值得买吗