PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码


Posted in PHP onFebruary 14, 2013

有时候很实用在一些场合,留住备用吧

function is_mobile_request()   
    {   
      $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';   
      $mobile_browser = '0';   
      if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))   
        $mobile_browser++;   
      if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))   
        $mobile_browser++;   
      if(isset($_SERVER['HTTP_X_WAP_PROFILE']))   
        $mobile_browser++;   
      if(isset($_SERVER['HTTP_PROFILE']))   
        $mobile_browser++;   
      $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));   
      $mobile_agents = array(   
            'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',   
            'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',   
            'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',   
            'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',   
            'newt','noki','oper','palm','pana','pant','phil','play','port','prox',   
            'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',   
            'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',   
            'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',   
            'wapr','webc','winw','winw','xda','xda-'   
            );   
      if(in_array($mobile_ua, $mobile_agents))   
        $mobile_browser++;   
      if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)   
        $mobile_browser++;   
      // Pre-final check to reset everything if the user is on Windows   
      if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)   
        $mobile_browser=0;   
      // But WP7 is also Windows, with a slightly different characteristic   
      if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)   
        $mobile_browser++;   
      if($mobile_browser>0)   
        return true;   
      else  
        return false;   
    }

文章来源:http://yi1.com.cn/posts/781

php 根据HTTP_USER_AGENT 判断用户浏览器类型

function browsers(){
   global $HTTP_USER_AGENT ;
   if (isset($HTTP_USER_AGENT)){
    $sAgent = $HTTP_USER_AGENT;
   }else{
    $sAgent = $_SERVER['HTTP_USER_AGENT'];
   }
   if (strpos($sAgent,'MSIE') !== false && strpos($sAgent,'mac') === false && strpos($sAgent,'Opera') === false){
    $iVersion = (float)substr($sAgent,strpos($sAgent,'MSIE') + 5,3);
    return ($iVersion >= 5.5) ;
   }else if (strpos($sAgent,'Gecko/') !== false){
    $iVersion = (int)substr($sAgent,strpos($sAgent,'Gecko/') + 6,8);
    return ($iVersion >= 20030210) ;
   }else{
    return false;
   }
  }
PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
php 操作调试的方法
Jul 12 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
PHP-redis中文文档介绍
Feb 07 #PHP
php中使用redis队列操作实例代码
Feb 07 #PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 #PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 #PHP
在smarty中调用php内置函数的方法
Feb 07 #PHP
php字符串分割函数explode的实例代码
Feb 07 #PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 #PHP
You might like
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
python实现画一颗树和一片森林
2018/06/25 Python
Python collections模块使用方法详解
2019/08/28 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
python 的topk算法实例
2020/04/02 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python实现猜拳游戏项目
2020/11/30 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
Linux的文件类型
2016/07/05 面试题
爱情检讨书大全
2014/01/21 职场文书
大学生毕业鉴定
2014/01/31 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书