溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php判斷客戶端是pc還是移動(dòng)設(shè)備的方法示例

發(fā)布時(shí)間:2021-02-20 15:57:06 來源:億速云 閱讀:159 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了php判斷客戶端是pc還是移動(dòng)設(shè)備的方法示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

php判斷客戶端是pc還是移動(dòng)設(shè)備的方法:根據(jù)php的$_SERVER['HTTP_USER_AGENT']中的各種瀏覽器訪問時(shí)所包含各個(gè)瀏覽器特定的字符串來判斷是屬于PC還是移動(dòng)端。

具體方法如下:

方法一:

/**
* 
* 根據(jù)php的$_SERVER['HTTP_USER_AGENT'] 中各種瀏覽器訪問時(shí)所包含各個(gè)瀏覽器特定的字符串來判斷是屬于PC還是移動(dòng)端
*/
function checkmobile() {
global $_G;
$mobile = array();
//各個(gè)觸控瀏覽器中$_SERVER['HTTP_USER_AGENT']所包含的字符串?dāng)?shù)組
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手機(jī)瀏覽器數(shù)組【猜的】
static $mobilebrowser_list =array('windows phone');
//wap瀏覽器中$_SERVER['HTTP_USER_AGENT']所包含的字符串?dāng)?shù)組
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';
//對(duì)于未知類型的瀏覽器,通過$_GET['mobile']參數(shù)來決定是否是手機(jī)瀏覽器
if(isset($_G['mobiletpl'][$_GET['mobile']])) {
  return true;
} else {
  return false;
}
}
/**
* 判斷$arr中元素字符串是否有出現(xiàn)在$string中
* @param  $string     $_SERVER['HTTP_USER_AGENT'] 
* @param  $arr          各中瀏覽器$_SERVER['HTTP_USER_AGENT']中必定會(huì)包含的字符串
* @param  $returnvalue 返回瀏覽器名稱還是返回布爾值,true為返回瀏覽器名稱,false為返回布爾值【默認(rèn)】
* @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;
}

(學(xué)習(xí)視頻分享:php視頻教程)

方法二:

<?php
function isMobile()
{ 
    // 如果有HTTP_X_WAP_PROFILE則一定是移動(dòng)設(shè)備
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
    {
        return true;
    } 
    // 如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息
    if (isset ($_SERVER['HTTP_VIA']))
    { 
        // 找不到為flase,否則為true
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    } 
    // 腦殘法,判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高
    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中查找手機(jī)瀏覽器的關(guān)鍵字
        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
        {
            return true;
        } 
    } 
    // 協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷
    if (isset ($_SERVER['HTTP_ACCEPT']))
    { 
        // 如果只支持wml并且不支持html那一定是移動(dòng)設(shè)備
        // 如果支持wml和html但是wml在html之前則是移動(dòng)設(shè)備
        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;
} 
?>

第一種方法親測(cè)可用

調(diào)用函數(shù):

if(!checkmobile())

{}

else{}

如果為手機(jī),則。。。否則。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php判斷客戶端是pc還是移動(dòng)設(shè)備的方法示例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI