PHP判斷是手機移動端訪問還是PC端訪問的函式

Mamba發表於2019-02-16

最近在開發專案的時候,分別開發了PC端和手機端,需要實現,用手機訪問PC端WWW域名的時候,自動判斷跳轉到移動端,用電腦訪問M域名手機網站的時候,自動跳轉到PC端網站,於是有了下面這個判斷函式:

/**
  * 移動端判斷
  */

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

檢視原文>> 曼巴童鞋 – 部落格 – PHP判斷是手機移動端訪問還是PC端訪問的函式

相關文章