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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
FleaPHP的安全设置方法
Sep 15 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
php微信支付接口开发程序
Aug 02 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 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
解析link_mysql的php版
2013/06/30 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python中创建二维数组
2018/10/17 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
中专自我鉴定范文
2013/10/16 职场文书
电气技术员岗位职责
2013/11/19 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
PL350与SW11的比较
2021/04/22 无线电
Javascript之datagrid查询详解
2021/09/15 Javascript