如何使用用户代理标头以不同方式检测Android手机和Android平板电脑?

时间:2010-10-17 07:47:23

标签: php android header user-agent

对于我的网站,我需要能够区分Android平板电脑访问时间和Android手机访问时间之间的区别。在将页面发送给用户之前需要检测它,因此使用JavaScript检查屏幕res不是一种选择。

目前我使用它来检测Android设备: stripos($ ua,'android')

平板电脑的用户代理有什么独特之处吗?

4 个答案:

答案 0 :(得分:5)

您可以使用PHP的$ _SERVER ['HTTP_USER_AGENT'],然后使用不区分大小写的eregi函数来查找以下内容,假设浏览器开发人员遵循Android的用户代理规范指南:

$ua = $_SERVER['HTTP_USER_AGENT'];
if (eregi('Android', $ua) && eregi('Mobile', $ua)) $platform = "Android Phone";
elseif (eregi('Android', $ua) && !eregi('Mobile', $ua)) $platform = "Android Tablet";

这不是万无一失的,但这是一个开始。

答案 1 :(得分:0)

结帐WURFL项目。它应该能够帮助您不仅在Android手机和Android平板电脑方案中,而且还可以帮助您。

答案 2 :(得分:0)

@Patrick Kershner,您的代码仅适用于Apple产品系列。每个Apple设备都会发送自己的UA,但Android设备并非如此。事实上,这篇文章的作者需要知道Android设备是平板电脑还是手机而不使用Javascript。用户user336828提交的代码是一个很好的解决方法,虽然不是100%可靠:一些克隆/白标/低质量设备可能从平板电脑和手机发送完全相同的UA字符串,但我认为这应该适用于大多数知名品牌的设备。我刚刚在Android手机和平板电脑上测试了这些代码并且它正在运行。

答案 3 :(得分:-2)

if(strstr($_SERVER['HTTP_USER_AGENT'],'iPod') ||   strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || strstr($_SERVER['HTTP_USER_AGENT'],'Android')){ 
    //do something...
}

为我工作