现在移动设备大热的年代,可能我们在做web前端开发的时候经常会需要用到对移动设备的页面匹配。当然我们可以用响应式页面设计来处理前端的匹配问题,但是响应式页面只是不显示某些代码,但是还是会加载到用户的移动设备中。为了更好的照顾到用户手机浏览的体验,减少不必要的加载。我们可以再通过PHP的方式来减少用户的代码加载,提高用户浏览页面时的体验。由于现在移动设备的种类繁多、而且浏览器五花八门,所以仅仅是通过User-Agent来判断已经不能完全解决问题了。

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;

}

?>

目前这个方法可以用于大多数的移动设备判断,使用时也可以根据需要自行添加一些UA的判断参数。

php 判断设备来源,PHP判断移动设备来源的方法相关推荐

  1. 联想服务器网卡型号怎么看,如何通过设备硬件ID判断无线网卡的品牌及型号

    故障现象: 如何通过设备硬件ID判断无线网卡的品牌及型号?解决方案: 硬件ID查询方法: 1.打开设备管理器,在设备管理器中找到网络适配器选项,在无线网卡设备上点击鼠标右键选择属性,参考如图: 注意: ...

  2. 判断访问端是否是移动设备

    判断访问端是否是移动设备,如果是移动设备就重定向到,移动端界面. var uri = location.href;var domainWap = "http://m.vmall.com&qu ...

  3. php判断客户端是否为手机移动设备,php怎么判断客户端是pc还是移动设备

    php判断客户端是pc还是移动设备的方法:根据php的$_SERVER['HTTP_USER_AGENT']中的各种浏览器访问时所包含各个浏览器特定的字符串来判断是属于PC还是移动端. 本文操作环境: ...

  4. php 判断是否苹果手机,php判断各种移动端设备的函数

    当我们需要分别判断 iPhone.Android以及iPad甚至QQ微信等等,那么我们该如何判断呢?以下代码来判断各种移动端设备终端. 移动端设备各种判断函数 // 移动端设备各种判断函数 funct ...

  5. 新字符设备驱动实验(自动分配设备号、自动创建应用层设备节点、新字符设备注册到内核的结构体)

    目录 自动分配和释放设备号 示例代码 新的字符设备注册到内核方法 字符设备结构体(前面的设备号也放进来) cdev_init结构体初始化函数 cdev_add 添加到linux内核 cdev_del内 ...

  6. 测试电视是不是4k的软件,怎么判断4K电视真假?教你快速检测的方法!

    原标题:怎么判断4K电视真假?教你快速检测的方法! 4K电视从进入市场之后一直都受到企业的力捧,随着电视企业对4K电视的大力度宣传和消费环境的逐渐成熟,越来越多的消费者开始认可4K电视,并在购机时表明 ...

  7. Linux设备驱动01:Linux设备驱动概述

    目录 1. 设备驱动的作用 2. 有无操作系统时的设备驱动 2.1 无操作系统 2.1.1 硬件.驱动和应用程序的关系 2.1.2 单任务软件典型架构 2.2 有操作系统 2.2.1 硬件.驱动.操作 ...

  8. Linux 设备驱动篇之I2c设备驱动

    ******************************************************************************************** 装载声明:希望 ...

  9. vue项目中获取当前设备 操作系统及版本,设备型号,ip,地区信息

    1.获取ip,地区信息 使用搜狐IP地址查询接口(?后边设置编码)须连网! http://pv.sohu.com/cityjson http://pv.sohu.com/cityjson?ie=utf ...

  10. android otg主从切换,一种自动切换OTG设备主从模式下的Vbus电压的方法与电路与流程...

    本发明涉及otg设备的检测领域,更具体地说,涉及一种自动切换otg设备主从模式下的vbus电压的方法与电路. 背景技术: 现有技术中,具备otg功能的设备通过检测usb_id引脚的状态来判断工作为ho ...

最新文章

  1. linux进程管理之进程创建
  2. java静态链表_用Java实现一个静态链表
  3. WordPress4.8.1版本存在XSS跨站攻击漏洞
  4. oracle DB_LINK
  5. [转]由自助餐想到软件团队的管理
  6. time_t转换为DateTime
  7. 详解TCP和UDP数据段的首部格式
  8. [笔记]使用API函数 GetACP 获取Windows系统当前代码页
  9. 解决MobaXterm左侧没有文件列表,没有SCP,不显示文件夹
  10. 复化科特斯公式matlab_牛顿科特斯公式要点分析.ppt
  11. linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
  12. [python][转载]pyltp的使用教程
  13. CheatSheet——PCL
  14. OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。
  15. k-means和GMM的区别
  16. 三星手机电池循环清零代码_巅峰对决申真谞离奇“滑标” 三星杯决赛首局柯洁轻松告捷...
  17. 单个原子对X射线的散射
  18. ListBox.BeginUpdate方法解决C#开发 CAN通讯上位机ListBox控件刷新延迟问题
  19. tiny_jpeg.h编码JPEG图像源码注释
  20. Chocolat.js使用方法

热门文章

  1. Workshop | 超高效的设计方法你GET了吗?Design Sprint设计冲刺工作坊
  2. Sublime Text 3添加右键
  3. phpcms如何给已有的模块添加新功能?
  4. 报表设计器条形码支持类型
  5. xenserver命令启动虚拟机
  6. 女人护肤品可与男人共用! - 健康程序员,至尚生活!
  7. EasyNetQ介绍
  8. sql server 2008学习1–系统数据库
  9. 解决查询时报的cannot be cast to com.credithc.enjoy.manager.OrderResp错误
  10. “我是技术总监,你干嘛总问我技术细节?”| 程序员有话说