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 相关文章推荐
PHP 高手之路(三)
Oct 09 PHP
redis 队列操作的例子(php)
Apr 12 PHP
PHP中的str_repeat函数在JavaScript中的实现
Sep 16 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
Thinkphp实现自动验证和自动完成
Dec 19 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
php中上传文件的的解决方案
Sep 25 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python实现图片上添加图片
2019/11/26 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
财务部绩效考核方案
2014/05/04 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书