文档章节

PHP 多端判断

hey胡一天
 hey胡一天
发布于 2017/10/12 17:12
字数 412
阅读 91
收藏 0
PHP
 /**
     * 判断是PC端还是wap端访问
     * [@return](https://my.oschina.net/u/556800) type判断手机移动设备访问
     */
    function isMobile()
    { 
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
        {
            return true;
        } 
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA']))
        { 
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        } 
        // 脑残法,判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT']))
        {
            $clientkeywords = array ('nokia',
                'sony',
                'ericsson',
                'mot',
                'samsung',
                'htc',
                'sgh',
                'lg',
                'sharp',
                'sie-',
                'philips',
                'panasonic',
                'alcatel',
                'lenovo',
                'iphone',
                'ipod',
                'blackberry',
                'meizu',
                'android',
                'netfront',
                'symbian',
                'ucweb',
                'windowsce',
                'palm',
                'operamini',
                'operamobi',
                'openwave',
                'nexusone',
                'cldc',
                'midp',
                'wap',
                'mobile'
                ); 
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
            {
                return true;
            } 
        } 
        // 协议法,因为有可能不准确,放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT']))
        { 
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
            {
                return true;
            } 
        } 
        return false;
    }
    //判断是否为安卓手机
    public function isAndroid()
    {
        if(isset($_SERVER['HTTP_USER_AGENT'])){
            $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
            if(strpos($agent,'android') !== false)
                return true;
        }
        return false;
    }
    //判断是否为iphone或者ipad
    public function isIos()
    {
        if(isset($_SERVER['HTTP_USER_AGENT'])){
            $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
            if(strpos($agent, 'iphone')||strpos($agent, 'ipad'))
                return true;
        }
        return false;
    }
    //判断是否为微信内置浏览器打开
    public function isWechet()
    {
        if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){
            return true;
        }
        return false;
    }
    //整合到一起,判断当前设备,1:安卓;2:IOS;3:微信;0:未知
    public function isDevice()
    {
        if($_SERVER['HTTP_USER_AGENT']){
            $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
            if(strpos($agent, 'micromessenger') !== false)
                return 3;
            elseif(strpos($agent, 'iphone')||strpos($agent, 'ipad'))
                return 2;
            else
                return 1;
        }
        return 0;
    }

本文转载自:http://www.yanshuo.me/p/52621

hey胡一天
粉丝 4
博文 13
码字总数 24203
作品 0
南昌
程序员
私信 提问
Taro 多端开发的正确姿势:打造三端统一的网易严选(小程序、H5、React Native)

前言 笔者所在的趣店 FED 早在去年 10 月份就已全面使用 Taro 框架开发小程序(当时版本为 1.1.0-beta.4),至今也上线了 2 个微信小程序、2 个支付宝小程序。 之所以选用 Taro,解决微信小程...

jsNewbee
02/19
0
0
Taro 1.1 发布,全面支持微信/百度/支付宝 小程序

在9月16日的掘金小程序大会上,Taro 正式发布了 1.0 版本。 作为一个多端统一开发框架,Taro 1.0 版本为广大开发者带来了许多激动人心的特性,帮助开发者们更方便快捷地开发多端应用。 前进的...

凹凸实验室
2018/11/06
0
0
Taro 1.0.0-beta.22 发布,开发小程序的多端统一框架

Taro 1.0.0-beta.22 发布了,Taro 是由京东 - 凹凸实验室打造的一套遵循 React 语法规范的多端统一开发框架。 更新内容如下: Bug Fixes cli: 优化组件判断 (fb404f1) weapp: 修复构造函数里...

h4cd
2018/08/31
715
0
Taro 1.3.4 发布,BAT 小程序、H5 与 RN 端统一框架

Taro 1.3.4 发布了。Taro 是一套遵循 React 语法规范的多端统一开发框架,支持用 React 的方式编写一次代码,生成能运行在微信小程序/百度智能小程序/支付宝小程序、H5 与 React Native 等端...

h4cd
07/01
1K
0
Mars - 又双叒叕一个多端开发框架?这次是 Vue 驱动,能完美适配 H5

Mars 简介 1、Mars 是什么? Mars 是由 Vue 驱动的多端开发框架,其语法规范完全遵循 Vue,支持一套代码同时运行到百度小程序、微信小程序以及 H5 Web 端。 Mars 诞生于搜索垂类产品对于小程...

marsjsTeam
04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
4
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部