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的FTP学习(一)
Oct 09 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP 遍历文件实现代码
May 04 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP数据对象PDO操作技巧小结
2016/09/27 PHP
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
JS的get和set使用示例
2014/02/20 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
Python 专题四 文件基础知识
2017/03/20 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
python调用c++传递数组的实例
2019/02/13 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
年终奖发放方案
2014/06/02 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
商场收银员岗位职责
2015/04/07 职场文书
SQL写法--行行比较
2021/08/23 SQL Server
Python IO文件管理的具体使用
2022/03/20 Python
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js