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 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
php printf输出格式使用说明
Dec 05 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
php生成图片验证码
Jun 09 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 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
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
限制文本框输入N个字符的js代码
2010/05/13 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python 爬虫图片简单实现
2017/06/01 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python检查ping终端的方法
2019/01/26 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
python如何快速生成时间戳
2020/07/21 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
database面试题
2013/03/28 面试题
电子信息专业学生自荐信
2013/11/09 职场文书
双十佳事迹材料
2014/01/29 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
文秘应届生求职信
2014/07/05 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
学校德育工作总结2015
2015/05/11 职场文书
入党后的感想
2015/08/10 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
如何写好闭幕词
2019/04/02 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis