温馨提示×

php判断客户端是pc还是移动设备的方法示例

发布时间:2021-02-20 15:57:06 阅读:130 作者:小新 栏目:编程语言

这篇文章主要介绍了php判断客户端是pc还是移动设备的方法示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

php判断客户端是pc还是移动设备的方法:根据php的$_SERVER['HTTP_USER_AGENT']中的各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端。

具体方法如下:

方法一:

/**
* 
* 根据php的$_SERVER['HTTP_USER_AGENT'] 中各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端
*/
function checkmobile() {
global $_G;
$mobile = array();
//各个触控浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组
static $touchbrowser_list =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''webos''techfaith''palmsource',
    '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');
//window手机浏览器数组【猜的】
static $mobilebrowser_list =array('windows phone');
//wap浏览器中$_SERVER['HTTP_USER_AGENT']所包含的字符串数组
static $wmlbrowser_list = array('cect''compal''ctl''lg''nec''tcl''alcatel''ericsson''bird''daxian''dbtel''eastcom',
   'pantech''dopod''philips''haier''konka''kejian''lenovo''benq''mot''soutec''nokia''sagem''sgh',
   'sed''capitel''panasonic''sonyericsson''sharp''amoi''panda''zte');
$pad_list = array('pad''gt-p1000');
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
if(dstrpos($useragent, $pad_list)) {
  return false;
}
if(($v = dstrpos($useragent, $mobilebrowser_list, true))){
  $_G['mobile'] = $v;
  return '1';
}
if(($v = dstrpos($useragent, $touchbrowser_list, true))){
  $_G['mobile'] = $v;
  return '2';
}
if(($v = dstrpos($useragent, $wmlbrowser_list))) {
  $_G['mobile'] = $v;
  return '3'//wml版
}
$brower = array('mozilla''chrome''safari''opera''m3gate''winwap''openwave''myop');
if(dstrpos($useragent, $brower)) return false;
$_G['mobile'] = 'unknown';
//对于未知类型的浏览器,通过$_GET['mobile']参数来决定是否是手机浏览器
if(isset($_G['mobiletpl'][$_GET['mobile']])) {
  return true;
} else {
  return false;
}
}
/**
* 判断$arr中元素字符串是否有出现在$string中
* @param  $string     $_SERVER['HTTP_USER_AGENT'] 
* @param  $arr          各中浏览器$_SERVER['HTTP_USER_AGENT']中必定会包含的字符串
* @param  $returnvalue 返回浏览器名称还是返回布尔值,true为返回浏览器名称,false为返回布尔值【默认】
* @author           discuz3x
* @lastmodify    2014-04-09
*/
function dstrpos($string, $arr, $returnvalue = false) {
if(empty($string)) return false;
foreach((array)$arr as $v) {
  if(strpos($string, $v) !== false) {
   $return = $returnvalue ? $v : true;
   return $return;
  }
}
return false;
}

(学习视频分享:php视频教程)

方法二:

<?php
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;
} 
?>

第一种方法亲测可用

调用函数:

if(!checkmobile())

{}

else{}

如果为手机,则。。。否则。

感谢你能够认真阅读完这篇文章,希望小编分享的“php判断客户端是pc还是移动设备的方法示例”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

温馨提示×

网络异常,请检查网络