• 技术文章 >后端开发 >PHP问题

    php怎么识别手机还是pc

    藏色散人藏色散人2021-07-19 09:39:51原创96

    php识别手机还是pc的方法:1、通过“function isMobile() {...}”方法判断是否是手机端;2、通过“function isWeixin() {...}”方法判断是否是微信内置浏览器。

    本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

    php怎么识别手机还是pc?

    PHP 判断是手机端还是PC端 ; 判断是否是微信浏览器;JS判断是否在微信浏览器打开

    1、判断是否是手机端

    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;
      } 
      // 脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信
      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','MicroMessenger'); 
        // 从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;
    }

    2、判断是否是微信内置浏览器

    function isWeixin() { 
      if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) { 
        return true; 
      } else {
        return false; 
      }
    }

    3、JS 判断是否是移动设备打开。

    if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
            var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
            if (ua.match(/MicroMessenger/i) == "micromessenger") {
                    //在微信中打开
            }
            if (ua.match(/WeiBo/i) == "weibo") {
                    //在新浪微博客户端打开
            }
            if (ua.match(/QQ/i) == "qq") {
                    //在QQ空间打开
            }
            if (browser.versions.ios) {
                    //是否在IOS浏览器打开
            } 
            if(browser.versions.android){
                    //是否在安卓浏览器打开
            }
    } else {
            //否则就是PC浏览器打开
    }

    4、JS 通过以下方法可以判断很多浏览器。包括判断IE浏览器,Opera浏览器,苹果浏览器,谷歌浏览器,火狐浏览器等。

    var browser = {
        versions: function () {
            var u = navigator.userAgent, app = navigator.appVersion;
            return {         //移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
                iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
        }(),
        language: (navigator.browserLanguage || navigator.language).toLowerCase()
    }

    推荐学习:《PHP视频教程

    以上就是php怎么识别手机还是pc的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php 服务器跳转代码是什么 下一篇:php ipv6格式怎么转换
    VIP会员

    相关文章推荐

    • php foreach怎么停止循环• 一文详解使用PHP编写爬虫的方法• php怎么把数字转为汉字• php 服务器跳转代码是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网