我需要一种在服务器端检测移动浏览器的方法。我想要一种不需要我做任何设置和维护的方法,但仍然为我提供(至少)Android、Mobile Safari 和 Blackberry 浏览器的准确检测,以及 Opera 等替代品。
我希望至少覆盖大部分移动市场,如果不需要太多,我真的更喜欢几乎所有的市场。
我需要一种在服务器端检测移动浏览器的方法。我想要一种不需要我做任何设置和维护的方法,但仍然为我提供(至少)Android、Mobile Safari 和 Blackberry 浏览器的准确检测,以及 Opera 等替代品。
我希望至少覆盖大部分移动市场,如果不需要太多,我真的更喜欢几乎所有的市场。
WURLF 是移动浏览器检测的终极方法,并且提供了PHP API。
我发现这个很容易使用php-mobile-detect
(编辑:目前浏览器功能项目已关闭,即 atm 这个答案不是一个选项)
您所需要的只是get_browser()和最近的 browscap.ini,它将用户代理字符串映射到浏览器/版本及其功能。
您可以从http://browsers.garykeith.com/downloads.asp获得通常非常最新的 browscap.ini 版本
只需阅读标头(如何在 PHP 中读取任何请求标头)并解析/解释它以读取“用户代理”,您可能能够找到现有的 PHP 脚本,或者可能只是简单的正则表达式帮助确定哪些用户代理是移动的,哪些是普通的个人电脑/笔记本电脑。
有很多不同的标头,因为它指示操作系统,所以尽可能多的不同移动操作系统会有用户代理标头,因此脚本需要有一个所有有效标头的列表。
不久前找到了这个库:
http://code.google.com/p/mobileesp/
具有 PHP、Java、JavaScript 和 C# 版本。我认为它是一个“轻量级”的智能手机/平板电脑检测工具,没有依赖关系,并且会定期更新。尽管代码质量的某些方面有点不稳定,但我对此有不同的感觉。
如果你需要更轻量级的东西,WordPress 的 WP Super Cache 插件包含一些你可以滑动的长正则表达式字符串。
基于用户代理字符串的浏览器嗅探总是很不稳定。我查看了 WURFL,它压缩了几 MB。使用它是矫枉过正的。更好的方法是检测网站上使用的顶级设备,为这些设备进行设计,然后收工。
Zend Framework最近引入了Zend_Http_UserAgent 。
它可以通过 Wurfl、TeraWurfl 和 DeviceAtlas API 检测 UserAgent 来确定移动设备及其功能。
http://code.google.com/p/hdapi/怎么样?PHP中的服务器端移动检测。
不幸的是,WURFL 不再免费用于商业项目。
但是有OpenDDR及其实验性 PHP 实现。
我曾经用来临时存储访问者的 ip-addresses 和 csrf-session 值(用于计算当前访问者)。
而且我注意到我有一个额外的好处,就是能够查看访问者是使用手机还是 PC:手机的 csrf 会随着每次新页面加载而变化,而 PC 不会;并且 IP 地址在这两种情况下都保留。
当然,如果访问者单击两次,您只会检测到移动设备并且我没有检查它的可靠性(因为我并不真的需要它),但它只是 php/服务器端。