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.MVC的模板标签系统(二)
Sep 05 PHP
php 获取远程网页内容的函数
Sep 08 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
php面象对象数据库操作类实例
Dec 02 PHP
Smarty分页实现方法完整实例
May 11 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
PHP实现简单计算器小程序
Aug 28 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
PHP isset()及empty()用法区别详解
Aug 29 PHP
PHP解决高并发的优化方案实例
Dec 10 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递归遍历多维数组的方法
2015/04/18 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
Javascript调用C#代码
2011/01/17 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
js禁止表单重复提交
2017/08/29 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
Python中实现的RC4算法
2015/02/14 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
关爱老人标语
2014/06/21 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
退休教师追悼词
2015/06/23 职场文书
竞聘书的秘诀
2019/04/02 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL