找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3356|回复: 1

isMobile() 判断是否是移动端

[复制链接]
发表于 2019-3-13 11:32:55 | 显示全部楼层 |阅读模式
  1. /*移动端判断*/
  2. function isMobile()
  3. {
  4.     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
  5.     if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
  6.     {
  7.         return true;
  8.     }
  9.     // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
  10.     if (isset ($_SERVER['HTTP_VIA']))
  11.     {
  12.         // 找不到为flase,否则为true
  13.         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
  14.     }
  15.     // 脑残法,判断手机发送的客户端标志,兼容性有待提高
  16.     if (isset ($_SERVER['HTTP_USER_AGENT']))
  17.     {
  18.         $clientkeywords = array ('nokia',
  19.             'sony',
  20.             'ericsson',
  21.             'mot',
  22.             'samsung',
  23.             'htc',
  24.             'sgh',
  25.             'lg',
  26.             'sharp',
  27.             'sie-',
  28.             'philips',
  29.             'panasonic',
  30.             'alcatel',
  31.             'lenovo',
  32.             'iphone',
  33.             'ipod',
  34.             'blackberry',
  35.             'meizu',
  36.             'android',
  37.             'netfront',
  38.             'symbian',
  39.             'ucweb',
  40.             'windowsce',
  41.             'palm',
  42.             'operamini',
  43.             'operamobi',
  44.             'openwave',
  45.             'nexusone',
  46.             'cldc',
  47.             'midp',
  48.             'wap',
  49.             'mobile'
  50.             );
  51.         // 从HTTP_USER_AGENT中查找手机浏览器的关键字
  52.         if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
  53.         {
  54.             return true;
  55.         }
  56.     }
  57.     // 协议法,因为有可能不准确,放到最后判断
  58.     if (isset ($_SERVER['HTTP_ACCEPT']))
  59.     {
  60.         // 如果只支持wml并且不支持html那一定是移动设备
  61.         // 如果支持wml和html但是wml在html之前则是移动设备
  62.         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'))))
  63.         {
  64.             return true;
  65.         }
  66.     }
  67.     return false;
  68. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Discuz代码分析|Discuz目录结构|DZ起点网 ( 蜀ICP备13000518号-15 )

GMT+8, 2024-4-25 16:16 , Processed in 0.048589 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表