php根据user-agent判断客户端是pc还是wap

GitHub 上有类库: https://github.com/serbanghita/Mobile-Detect

不用看下面的了。。。

最近要做一个api,返回内容要区分pc还是wap,于是想到了用 http 请求头的 user-agent 来判断。

什么是user-agent

难点在于移动端设备繁多,浏览器几乎一种设备一个版本,要全部兼容判断,有难度。于是,在网上搜罗了很多资料,尽量把各个版本的浏览器的user-agent都兼容起来,写了如下代码。不过兼容性和准确性有待各位检验,哈哈。发现bug或有不足之处请留言,尽量修改完善,让后来人少走弯路。

//判断移动端
function isMobile() {
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) return true;

    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], "wap")) {
        return true;
    }

    $user_agent = $_SERVER['HTTP_USER_AGENT'];  
    $mobile_agents = array ('iphone','android','phone','mobile','wap','netfront','java','opera mobi',
        'opera mini','ucweb','windows ce','symbian','series','webos','sony','blackberry','dopod',
        'nokia','samsung','palmsource','xda','pieplus','meizu','midp','cldc','motorola','foma',
        'docomo','up.browser','up.link','blazer','helio','hosin','huawei','novarra','coolpad',
        'techfaith','alcatel','amoi','ktouch','nexian','ericsson','philips','sagem','wellcom',
        'bunjalloo','maui','smartphone','iemobile','spice','bird','zte-','longcos','pantech',
        'gionee','portalmmm','jig browser','hiptop','benq','haier','^lct','320x320','240x320',
        '176x220','windows phone','cect','compal','ctl','lg','nec','tcl','daxian','dbtel','eastcom',
        'konka','kejian','lenovo','mot','soutec','sgh','sed','capitel','panasonic','sonyericsson',
        'sharp','panda','zte','acer','acoon','acs-','abacho','ahong','airness','anywhereyougo.com',
        'applewebkit/525','applewebkit/532','asus','audio','au-mic','avantogo','becker','bilbo',
        'bleu','cdm-','danger','elaine','eric','etouch','fly ','fly_','fly-','go.web','goodaccess',
        'gradiente','grundig','hedy','hitachi','htc','hutchison','inno','ipad','ipaq','ipod',
        'jbrowser','kddi','kgt','kwc','lg ','lg2','lg3','lg4','lg5','lg7','lg8','lg9','lg-','lge-',
        'lge9','maemo','mercator','meridian','micromax','mini','mitsu','mmm','mmp','mobi','mot-',
        'moto','nec-','newgen','nf-browser','nintendo','nitro','nook','obigo','palm','pg-',
        'playstation','pocket','pt-','qc-','qtek','rover','sama','samu','sanyo','sch-','scooter',
        'sec-','sendo','sgh-','siemens','sie-','softbank','sprint','spv','tablet','talkabout',
        'tcl-','teleca','telit','tianyu','tim-','toshiba','tsm','utec','utstar','verykool','virgin',
        'vk-','voda','voxtel','vx','wellco','wig browser','wii','wireless','xde','pad','gt-p1000');

    $is_mobile = false;
    foreach ($mobile_agents as $device) {  
      if (stristr($user_agent, $device)) {  
        $is_mobile = true;  
        break;  
      }
    }
    return $is_mobile;  
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值