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执行速度全攻略(下)
Oct 09 PHP
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
php UTF8 文件的签名问题
Oct 30 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php实现两个数组相加的方法
Feb 17 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
微信支付开发订单查询实例
Jul 12 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 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与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP抽象类 介绍
2012/06/13 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
php依赖注入知识点详解
2019/09/23 PHP
window.name代替cookie的实现代码
2010/11/28 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
python操作gmail实例
2015/01/14 Python
Python中的ctime()方法使用教程
2015/05/22 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
C#面试问题
2016/07/29 面试题
大四自我鉴定
2014/02/08 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
荒岛余生观后感
2015/06/09 职场文书
大学副班长竞选稿
2015/11/21 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android