php函数实现判断是否移动端访问

本文给大家分享的是一则php判断是否移动端访问的函数,是之前收藏的,这里发出来,推荐给小伙伴们。

忘记在哪里获取的函数了,刚才不了心在一个包里面找到,临时保存起来,代码如下:

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

非常简单实用的函数,分享给大家,希望大家能够喜欢。