22

我目前正在查看一些用于 PHP 检测手机的代码,这可能很容易。

现在我遇到了一个问题——我想在我的 MVC 框架中为平板电脑、手机和网页制作独特的视图文件。所以我需要将平板电脑与其他移动设备分开。

目前这是我正在使用的代码:

public function isMobile()
{   
    if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT']))
    return true;
else
    return false;
}

但这还不够——唯一的检查是设备是否是移动设备——如果不是,它会按照标准告诉框架,我们在计算机上。最后一部分还可以——但我想将移动设备分为实际移动设备中的移动设备——以及第二组,应该是平板电脑。

我希望,我已经表达了我的愿望,并且我希望你能以一种好的方式来实现这一目标。

提前致谢。

4

4 回答 4

33

这是一个包含单独检测每个平台的方法的类。

于 2012-04-02T19:57:41.443 回答
8

老问题,但这是我对移动检测的看法。

您在问题中声明您想要移动设备的唯一文件,所以我可以假设这样做的原因是为移动客户端和桌面客户端提供不同版本的网站。

这种方法在一定程度上是可以的。这一点被称为Android。每天有大约 150 万台if {} elseAndroid 设备被激活,分辨率从 320*240 到 2560*1600,这使得每台设备都很难实现。即使您尝试列出最常用设备的列表并尝试仅针对这些设备,将来也很难支持新设备。

我不久前的方法是忘记将设备分为“移动”和“桌面”类别的旧方法,并创建一种新方法。该方法包括基于浏览器功能的“好”和“坏”浏览器。例如,如果浏览器支持本地存储,它将属于“好”类别。

从这个开始,我有可能创建网站的“基本”版本,从 UI 的角度来看非常基本,但可以跨浏览器工作。该网站的基本版本将在所有设备上呈现相同的内容(因为这在一天结束时很重要),尺寸将非常小(更少的资产,更小的 html),并且基于浏览器的功能将在客户端上得到丰富边。

所以最终你会得到一个占用空间非常小的网站(html大小和资产),看起来不错的跨浏览器,它将支持市场上出现的任何新设备而无需任何更改,即使在连接不良,并且可以根据浏览器功能在客户端进行丰富。

您甚至可以根据设备大小丰富网页:如果浏览器报告大屏幕,您可以引入更多资产、更多广告,使网页更美观;如果浏览器报告在一个小屏幕上,则保持原样。

于 2014-02-18T10:10:39.487 回答
5

Mobile_Detect 是一个用于检测移动设备(包括平板电脑)的轻量级 PHP 类。它使用 User-Agent 字符串结合特定的 HTTP 标头来检测移动环境。— 阅读更多 http://mobiledetect.net

于 2013-06-10T11:18:05.800 回答
0

您还可以使用更全面的解决方案,例如 WURFL Cloud,这是一种检测移动设备功能的服务,例如 is_mobile 和 is_tablet。低流量网站有免费计划:http ://www.scientiamobile.com/cloud

于 2012-04-07T17:34:26.963 回答