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实现Socket服务器的代码
Apr 03 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
php检测useragent版本示例
Mar 24 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php+xml编程之SimpleXML的应用实例
Jan 24 PHP
PHP 正则表达式小结
Feb 12 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 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+memcache实现消息队列案例分享
2014/05/21 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
详解JSON Web Token 入门教程
2018/07/30 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
python使用matplotlib绘制折线图教程
2017/02/08 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
倡议书的格式写法
2015/04/28 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
golang 实用库gotable的具体使用
2021/07/01 Golang
Oracle 死锁的检测查询及处理
2021/09/25 Oracle
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python