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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
用php解析html的实现代码
Aug 08 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
Laravel中间件实现原理详解
Oct 09 PHP
PHP实现文件上传下载实例
Oct 18 PHP
Yii全局函数用法示例
Jan 22 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学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
php数组遍历类与用法示例
2019/05/24 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
js闭包用法实例详解
2016/12/13 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
从vue源码看props的用法
2019/01/09 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
python批量处理txt文件的实例代码
2020/01/13 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
音乐专业自荐信
2014/02/07 职场文书
读书之星事迹材料
2014/05/12 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
研修心得体会
2014/09/04 职场文书
学生会辞职信
2015/03/02 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers