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数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
php实现的农历算法实例
Aug 11 PHP
PHP内存使用情况如何获取
Oct 10 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
php装饰者模式简单应用案例分析
Oct 23 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
Search Engine Friendly的URL设计
2006/10/09 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php截取字符串函数分享
2015/02/02 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
详解vue axios二次封装
2018/07/22 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
爱情寄语大全
2014/04/09 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
手机销售员岗位职责
2015/04/11 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
工作会议简报
2015/07/20 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
民事纠纷协议书
2016/03/23 职场文书