PHP实现的浏览器检查类


Posted in PHP onApril 11, 2016

本文实例讲述了PHP实现的浏览器检查类。分享给大家供大家参考,具体如下:

<?php
//原作者:epsilon7
//SonyMusic([email]sonymusic@163.net[/email])
class BrowserDetector {
 var $UA = "";  //$HTTP_USER_AGENT的内容
 var $BROWSER= "Unknown";  //浏览器类型
 var $PLATFORM  = "Unknown";  //操作系统
 var $VERSION= "";  //浏览器版本号
 var $MAJORVER  = "";  //浏览器主版本号
 var $MINORVER  = "";  //浏览器副版本号
 /* 构造函数开始 */
 function BrowserDetector(){
  $this->UA  = getenv(HTTP_USER_AGENT);
  $preparens = "";
  $parens = "";
  $i = strpos($this->UA,"(");
  if ($i >= 0)  {
    $preparens = trim(substr($this->UA,0,$i));
    $parens = substr($this->UA,$i+1,strlen($this->UA));
    $j = strpos($parens,")");
    if($j>=0) {
     $parens = substr($parens,0,$j);
    }
  }
  else  {
    $preparens = $this->UA;
  }
  $browVer = $preparens;
  $token = trim(strtok($parens,";"));
  while($token)  {
    if($token=="compatible") {
    }
    elseif(preg_match("/MSIE/i","$token")) {
     $browVer = $token;
    }
    elseif(preg_match("/Opera/i","$token")) {
     $browVer = $token;
    }
    elseif(preg_match("/X11/i","$token") || preg_match("/SunOS/i","$token") || preg_match ("/Linux/i","$token")) {
     $this->PLATFORM  = "Unix";
    }
    elseif(preg_match("/Win/i","$token")) {
     $this->PLATFORM  = $token;
    }
    elseif(preg_match("/Mac/i","$token") || preg_match("/PPC/i","$token")) {
     $this->PLATFORM  = $token;
    }
    $token = strtok(";");
  }
  $msieIndex = strpos($browVer,"MSIE");
  if($msieIndex >= 0)  {
    $browVer = substr($browVer,$msieIndex,strlen($browVer));
  }
  $leftover  = "";
  if(substr($browVer,0,strlen("Mozilla")) == "Mozilla")  {
    $this->BROWSER = "Netscape";
    $leftover=substr($browVer,strlen("Mozilla")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Lynx")) == "Lynx")  {
    $this->BROWSER = "Lynx";
    $leftover=substr($browVer,strlen("Lynx")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("MSIE")) == "MSIE") {
    $this->BROWSER = "IE";
    $leftover=substr($browVer,strlen("MSIE")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Microsoft Internet Explorer")) == "Microsoft Internet Explorer")  {
    $this->BROWSER = "IE";
    $leftover=substr($browVer,strlen("Microsoft Internet Explorer")+1,strlen($browVer));
  }
  elseif(substr($browVer,0,strlen("Opera")) == "Opera")  {
    $this->BROWSER = "Opera";
    $leftover=substr($browVer,strlen("Opera")+1,strlen($browVer));
  }
  $leftover = trim($leftover);
  $i=strpos($leftover," ");
  if($i > 0)  {
    $this->VERSION = substr($leftover,0,$i);
  }
  else  {
    $this->VERSION = $leftover;
  }
  $j = strpos($this->VERSION,".");
  if($j >= 0)  {
    $this->MAJORVER = substr($this->VERSION,0,$j);
    $this->MINORVER = substr($this->VERSION,$j+1,strlen($this->VERSION));
  }
  else  {
    $this->MAJORVER = $this->VERSION;
  }
 }
}
//测试程序开始
$test=new browserdetector;
echo $test->UA."<br>";
echo $test->BROWSER."<br>";
echo $test->PLATFORM."<br>";
echo $test->VERSION."<br>";
echo $test->MAJORVER."<br>";
echo $test->MINORVER."<br>";
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
PHP中date与gmdate的区别及默认时区设置
May 12 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 #PHP
PHP模板引擎Smarty内建函数详解
Apr 11 #PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 #PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 #PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 #PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 #PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 #PHP
You might like
网友原创的PHP模板类代码
2008/09/07 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
婚庆公司的创业计划书
2014/01/22 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
休学证明范本
2015/06/19 职场文书
整脏治乱工作简报
2015/07/21 职场文书
公司车队管理制度
2015/08/04 职场文书
人生感悟经典句子
2019/08/20 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
python利用while求100内的整数和方式
2021/11/07 Python
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python