检测移动设备 - 和平板电脑设备

22

我正在查看一些用于检测移动设备的PHP代码,这可能很容易。

现在我只有一个问题 - 我想在我的MVC框架中为平板电脑、手机和Web页面创建唯一的视图文件。因此,我需要将平板电脑与其他移动设备区分开来。

目前,我正在使用以下代码:

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;
}

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

我希望我已经表达清楚了我的意愿,并且我希望你能以良好的方式提供一些见解,以实现这一目标。

感谢您的提前帮助。


你的正则表达式不正确,或者你想将这个正则表达式拆分成多个部分(适用于移动设备和平板电脑)? - tonymarschall
这是一个包含逐个检测平台方法的类。 http://code.google.com/p/php-mobile-detect/ 但它只在平板电脑上的Opera浏览器中有效。平板电脑自带的Android浏览器会返回它是移动端。 - hello
4个回答

33

1
这实际上会回答问题 - 如果您确保在isMobile检查之前进行isTablet检查。因为平板电脑也被标记为“移动设备” - 出于逻辑原因.. :)谢谢,乔! - denlau
3
刚刚发现这个回答!我原本想回答这个问题,正是这个回答给出了我想表达的答案!+1 - pattyd
ASP.NET 有类似的东西可用吗? - Sergey
1
@ greenPerson 看起来,[这个网址](http://51degrees.codeplex.com/)将为ASP.Net提供类似的功能。 - Joe
hello发布的答案: 这只在平板电脑上的Opera浏览器中有效。平板电脑上内置的Android浏览器会返回它是移动设备。 - Petr R.

8

虽然这个问题比较老,但我还是想分享一下我对于移动设备检测的看法。

你在问题中提到你想为移动设备创建独特的文件,因此我可以假设你的目的是为了为移动客户端和桌面客户端呈现不同版本的网站。

这种方法在某些程度上是可行的,但有一个关键点需要注意,那就是 Android。每天有约 150万 台 Android 设备被激活,分辨率从 320*240 到 2560*1600 不等,这使得为每个设备编写 if {} else 语句变得非常困难。即使您尝试制作最常用设备的列表并仅针对它们进行优化,将来支持新设备也将变得困难。

我的方法是放弃旧的将设备分为“移动”和“桌面”类别的方法,而是创建一种基于浏览器能力的“好”和“坏”浏览器分类方法。例如,如果浏览器支持本地存储,则将其归类为“好”浏览器。

从这个出发点开始,我有可能创建一个“基础”版本的网站,从 UI 界面来看非常基本,但可以跨浏览器工作。这个基础版本的网站将在所有设备上呈现相同的内容(因为最终这才是最重要的),大小非常小(较少的资源、更小的 HTML),并且根据浏览器能力在客户端进行扩展。

因此,最终您将拥有一个具有非常小的占用空间(HTML 大小和资源)的网站,在跨浏览器方面看起来还不错,而且将支持市场上推出的任何新设备,而无需进行任何更改,即使在网络连接较差的情况下也能快速加载,并且可以根据浏览器能力在客户端进行扩展。

您甚至可以根据设备的尺寸对网页进行扩展:如果浏览器报告屏幕很大,您可以增加更多的资源、广告,并使网页更加美观;如果浏览器报告是小屏幕,则保持原样。


1
实际上,无论如何这个答案都值得一读 - 这是一个很酷的方法,我从未想过 :) - denlau
1
完全赞同这种方法,这正是我想要实现的,但至少在服务器端来说,这肯定比说起来容易得多! - Jamie Hartnoll

5

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


1
谢谢,这非常有用。 - deathlock

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接