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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php执行sql语句的写法
Mar 10 PHP
PHP 一个比较完善的简单文件上传
Mar 25 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php构造函数实例讲解
Nov 13 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
Laravel 验证码认证学习记录小结
Dec 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
PHP简介
2006/10/09 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
详解Python核心对象类型字符串
2018/02/11 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
python实现IOU计算案例
2020/04/12 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
介绍一下grep命令的使用
2012/06/28 面试题
企业治理工作自我评价
2013/09/26 职场文书
大学生党课思想汇报
2013/12/29 职场文书
和平主题的演讲稿
2014/01/12 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
2015暑假假期总结
2015/07/13 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技