溫馨提示×

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

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

PHP判斷移動(dòng)設(shè)備來(lái)源的方法

發(fā)布時(shí)間:2020-03-28 02:08:42 來(lái)源:網(wǎng)絡(luò) 閱讀:419 作者:天蝎座小伙 欄目:web開(kāi)發(fā)

現(xiàn)在移動(dòng)設(shè)備大熱的年代,可能我們?cè)谧鰓eb前端開(kāi)發(fā)的時(shí)候經(jīng)常會(huì)需要用到對(duì)移動(dòng)設(shè)備的頁(yè)面匹配。當(dāng)然我們可以用響應(yīng)式頁(yè)面設(shè)計(jì)來(lái)處理前端的匹配問(wèn)題,但是響應(yīng)式頁(yè)面只是不顯示某些代碼,但是還是會(huì)加載到用戶的移動(dòng)設(shè)備中。為了更好的照顧到用戶手機(jī)瀏覽的體驗(yàn),減少不必要的加載。我們可以再通過(guò)PHP的方式來(lái)減少用戶的代碼加載,提高用戶瀏覽頁(yè)面時(shí)的體驗(yàn)。由于現(xiàn)在移動(dòng)設(shè)備的種類繁多、而且瀏覽器五花八門,所以僅僅是通過(guò)User-Agent來(lái)判斷已經(jīng)不能完全解決問(wèn)題了。

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

?>

目前這個(gè)方法可以用于大多數(shù)的移動(dòng)設(shè)備判斷,使用時(shí)也可以根據(jù)需要自行添加一些UA的判斷參數(shù)。

向AI問(wèn)一下細(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