现在移动设备大热的年代,可能我们在做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. bzoj[1835][ZJOI2010]base 基地选址
  2. 编译Android VNC Server
  3. 直流电动机matlab仿真实验,直流电动机的MATLAB仿真.doc
  4. jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...
  5. 二分法查找c语言程序_C语言的那些经典程序 第十四期
  6. Atitit 设计模式的本质思考】
  7. hello python jpush_Python人脸识别 + 手机推送,老板来了你就会收到短信提示
  8. 学了python能干啥举例-第9p,Python是什么?学了Python能干什么?
  9. 多功能笔记工具Notability创建甜甜圈图案的趣味教程
  10. 从客户端中检测到有潜在危险的 Request.Form 值。
  11. 计算机模拟在材料加工研究中的应用,计算机在材料科学中的应用
  12. BXP多分区的正确的操作步骤(转)
  13. 正交匹配追踪算法OMP
  14. VSCode 设置为 Monaco字体
  15. 【红昭愿】MMD动作镜头下载
  16. Windows 常用快捷键 打开cmd DOS命令
  17. html获取地理位置
  18. 怒放7——扬笛水墨写意人物画作品赏析
  19. 2022/4/18 天梯赛刷题记录2022天梯赛热身赛
  20. C++实现JPEG格式图片解析(附代码)

热门文章

  1. PDF文件加密有什么方法?如何给PDF文件加密
  2. 基于Walle的多渠道快速打包自动脚本
  3. 轻松了解“Web应用防火墙”
  4. 数据库学习(MySQL):JDBC的简单增删改查实现
  5. CSS三大特性:层叠性、继承性、优先级
  6. bzoj 2705: [SDOI2012]Longge的问题——欧拉定理
  7. AD 脚本kixtart运用之六(outlook邮件批量生成签名)
  8. Mediostream框架filter使用说明
  9. ArcMap中的名称冲突问题
  10. spring 的配置 beanpropertyname属性