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学习笔记之二 php入门知识
Jan 12 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
php 利用array_slice函数获取随机数组或前几条数据
Sep 30 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 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/02/25 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
php 中的closure用法详解
2017/06/12 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP count()函数讲解
2019/02/03 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
9个JavaScript日常开发小技巧
2020/10/06 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
TensorFlow实现创建分类器
2018/02/06 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
python通过实例讲解反射机制
2019/10/17 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
工程采购员岗位职责
2014/03/09 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
班子四风对照检查材料
2014/08/21 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
奖学金感谢信
2015/01/21 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python