我目前正在研究一些用于移动设备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;
}
但这还不够 - 唯一的检查是设备是移动设备 - 如果不是它是标准告诉框架,我们在计算机上。最后一部分还可以 - 但是我想在实际的移动设备中拆分移动设备 - 以及一个应该是平板电脑的分组。
我希望,我已经明确表达了我的愿望,并且我希望,你有一些好的方法可以实现这一目标。
提前致谢。
答案 0 :(得分:33)
这是一个包含单独检测每个平台的方法的类。
答案 1 :(得分:8)
老问题,但这里有关于移动侦测的观点。
您在问题中说明您想要移动设备的唯一文件,因此我可以假设其原因是为移动客户端和桌面客户端提供不同版本的网站。
这种方法可以直到某一点。而这一点被称为Android。每天都会激活~1.5 million个Android设备,分辨率从320 * 240到2560 * 1600,这使得每个设备很难if {} else
。即使您尝试使用最常用的设备制作列表,并且您尝试仅针对这些设备,也很难在将来支持新设备。
我的方法不久就是忘记了将设备拆分为“移动”和“桌面”类别的旧方法,并创建了一种新方法。并且该方法包括基于浏览器功能的“好”和“坏”浏览器。例如,如果浏览器支持本地存储,则它将处于“良好”类别。
从这开始,我有可能创建一个网站的“基础”版本,从UI的角度来看非常基本但是可以跨浏览器工作。该网站的基本版本将在所有设备上显示相同的内容(,因为这在一天结束时很重要),其大小将非常小(更少的资产,更小的html )并且基于浏览器功能将在客户端丰富。
所以最终你会得到一个占地面积非常小( html大小和资产)的网站,它看起来可以跨浏览器,它将支持任何新的设备出现在没有任何变化的市场,即使在连接不良的情况下也会快速加载,并且可以根据浏览器功能在客户端进行丰富。
您甚至可以根据设备大小丰富网页:如果浏览器报告大屏幕,您可以带来更多资产,更多广告并使网页更加美观;如果浏览器报告在小屏幕上,则保持原样。
答案 2 :(得分:5)
Mobile_Detect是一个用于检测移动设备(包括平板电脑)的轻量级PHP类。它使用User-Agent字符串与特定HTTP标头相结合来检测移动环境。 - 阅读更多 http://mobiledetect.net
答案 3 :(得分:0)
您还可以使用更全面的解决方案,例如WURFL Cloud,它是一种检测移动设备功能的服务,如is_mobile和is_tablet。针对低流量网站提供免费计划:http://www.scientiamobile.com/cloud