(PHP)程式中如何判斷目前使用者終端是手機等移動終端

來源:互聯網
上載者:User

標籤:

推薦: 

Mobile-Detect:https://github.com/serbanghita/Mobile-Detect/blob/master/Mobile_Detect.php

Detect Mobile Browser:http://detectmobilebrowsers.com/

 

其他方法(具體效果有待實踐):

/** *  * 根據php的$_SERVER[‘HTTP_USER_AGENT‘] 中各種瀏覽器訪問時所包含各個瀏覽器特定的字串來判斷是屬於PC還是移動端 * @author           discuz3x * @lastmodify    2014-04-09 * @return  BOOL */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;}

 

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

 

function is_mobile_request()  {   $_SERVER[‘ALL_HTTP‘] = isset($_SERVER[‘ALL_HTTP‘]) ? $_SERVER[‘ALL_HTTP‘] : ‘‘;   $mobile_browser = ‘0‘;   if(preg_match(‘/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i‘, strtolower($_SERVER[‘HTTP_USER_AGENT‘])))    $mobile_browser++;   if((isset($_SERVER[‘HTTP_ACCEPT‘])) and (strpos(strtolower($_SERVER[‘HTTP_ACCEPT‘]),‘application/vnd.wap.xhtml+xml‘) !== false))    $mobile_browser++;   if(isset($_SERVER[‘HTTP_X_WAP_PROFILE‘]))    $mobile_browser++;   if(isset($_SERVER[‘HTTP_PROFILE‘]))    $mobile_browser++;   $mobile_ua = strtolower(substr($_SERVER[‘HTTP_USER_AGENT‘],0,4));   $mobile_agents = array(      ‘w3c ‘,‘acs-‘,‘alav‘,‘alca‘,‘amoi‘,‘audi‘,‘avan‘,‘benq‘,‘bird‘,‘blac‘,      ‘blaz‘,‘brew‘,‘cell‘,‘cldc‘,‘cmd-‘,‘dang‘,‘doco‘,‘eric‘,‘hipt‘,‘inno‘,      ‘ipaq‘,‘java‘,‘jigs‘,‘kddi‘,‘keji‘,‘leno‘,‘lg-c‘,‘lg-d‘,‘lg-g‘,‘lge-‘,      ‘maui‘,‘maxo‘,‘midp‘,‘mits‘,‘mmef‘,‘mobi‘,‘mot-‘,‘moto‘,‘mwbp‘,‘nec-‘,      ‘newt‘,‘noki‘,‘oper‘,‘palm‘,‘pana‘,‘pant‘,‘phil‘,‘play‘,‘port‘,‘prox‘,      ‘qwap‘,‘sage‘,‘sams‘,‘sany‘,‘sch-‘,‘sec-‘,‘send‘,‘seri‘,‘sgh-‘,‘shar‘,      ‘sie-‘,‘siem‘,‘smal‘,‘smar‘,‘sony‘,‘sph-‘,‘symb‘,‘t-mo‘,‘teli‘,‘tim-‘,      ‘tosh‘,‘tsm-‘,‘upg1‘,‘upsi‘,‘vk-v‘,‘voda‘,‘wap-‘,‘wapa‘,‘wapi‘,‘wapp‘,      ‘wapr‘,‘webc‘,‘winw‘,‘winw‘,‘xda‘,‘xda-‘    );   if(in_array($mobile_ua, $mobile_agents))    $mobile_browser++;   if(strpos(strtolower($_SERVER[‘ALL_HTTP‘]), ‘operamini‘) !== false)    $mobile_browser++;   // Pre-final check to reset everything if the user is on Windows   if(strpos(strtolower($_SERVER[‘HTTP_USER_AGENT‘]), ‘windows‘) !== false)    $mobile_browser=0;   // But WP7 is also Windows, with a slightly different characteristic   if(strpos(strtolower($_SERVER[‘HTTP_USER_AGENT‘]), ‘windows phone‘) !== false)    $mobile_browser++;   if($mobile_browser>0)    return true;   else  return false;

(PHP)程式中如何判斷目前使用者終端是手機等移動終端

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.