2012-04-02 82 views
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; 
} 

但这是不够的 - 唯一的检查是wheter设备是移动设备 - 如果不是它是作为标准告诉框架,我们在电脑上。最后一部分没有问题 - 但我想在实际的手机中拆分移动设备 - 并且在一个secound组中,这应该是平板电脑。

我希望,我已经明确表达了自己的意愿,希望能有一个很好的方法来达到这个目的。

在此先感谢。

+0

因此,您的正则表达式不正确,或者您想将多个正则表达式拆分为多个(用于移动设备和平板电脑)? – tonymarschall 2012-04-02 19:55:50

+0

>这是一个具有检测每个平台的方法。 >> http://code.google.com/p/php-mobile-detect/这只适用于平板电脑上的歌剧。平板电脑上的内置Android浏览器会返回其移动设备。 – hello 2012-04-27 12:10:10

回答

33

这里是一个具有检测每个平台的方法的类。

+1

这实际上会回答这个问题 - 如果您确保在isMobile检查之前进行isTablet检查。由于平板电脑也被标记为“手机” - 出于逻辑原因.. :) 谢谢乔! – denlau 2012-04-02 20:57:46

+3

刚刚发现,今天早些时候!我正准备回答这个问题,究竟这个答案是如何回答的! +1 – pattyd 2013-06-03 01:16:01

+0

像这样的ASP.NET可用吗? – 2013-08-16 17:45:25

0

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

5

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

+0

谢谢,它非常有用。 – deathlock 2013-12-31 01:38:04

8

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

您在您的问题中声明您需要针对移动设备的唯一文件,因此我可以假设其原因是为移动客户端和桌面客户端呈现不同版本的网站。

这种方法是确定的,直到某一点。这一点被称为Android。有~1.5 million Android设备每天激活分辨率从320 * 240到2560 * 1600,这使得它很难为每个人if {} else。即使您尝试使用大多数使用过的设备制作清单,并且只尝试定位这些清单,未来也很难支持新设备。

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

从这里开始,我有可能创建一个网站的“基本”版本,从UI的角度来看非常基本,但它可以跨浏览器工作。这个基础版本的网站将在所有设备上呈现相同的内容(,因为那个事情在当天结束时),将会非常小(较少的资产,较小的html)并且基于浏览器的功能将会在客户端丰富。

所以最后你会最终有一个网站,有非常小的足迹(HTML规模和资产),看起来OK跨浏览器,它将支持,市场上出现无任何变化的任何新设备即使在连接不好的情况下也能够快速加载,并且可以基于浏览器功能在客户端进行丰富。

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

+1

其实这个答案值得阅读 - 不管是什么 - 这是一个很酷的方法,我从来没有想过:) – denlau 2014-03-16 02:44:11

+1

完全赞同这种方法,这正是我想要实现的,但它肯定更容易说做起来,至少在服务器端的水平! – 2014-10-25 14:34:45