移动浏览器检测?

2022-08-30 22:57:30

我们正在寻找一种方法来确定用户是否正在使用移动浏览器。我们需要在 PHP 中通过解析用户代理字符串来做到这一点。我知道这种方法有很多警告,但我们真的需要这样做。

你有什么建议吗?一个好的(即使不完美)更新的代码?

我知道WURFL,我相信它很棒,但它不再可以自由用于非开源项目。通过谷歌搜索,我还找到了这个代码:http://mobiforge.com/developing/story/lightweight-device-detection-php(以及一些变体),但我不确定。看起来它写得很糟糕(例如,当他们使用$mobile_browser = '0'时,引号在整数周围...)。

你能推荐一些东西吗?

谢谢

亚力桑德罗


答案 1

我正在使用这个:

$isMobile = (bool)preg_match('#\b(ip(hone|od)|android\b.+\bmobile|opera m(ob|in)i|windows (phone|ce)|blackberry'.
                    '|s(ymbian|eries60|amsung)|p(alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
                    '|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );

它很短,可以检测到大多数移动用户(或者更确切地说是智能手机)。iPad和Android平板电脑不会被归类为“移动设备”,因为它们的屏幕尺寸更大。

如果你也想捕捉平板电脑,你可以使用这个:

$isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry|tablet'.
                    '|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
                    '|mobile|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );

答案 2

我正在使用Mobile_Detect类。它几乎每周更新一次。该代码在 HTTP 标头和用户代理字符串中查找“移动”设备的迹象。

演示←从您的移动设备运行此命令

您可能只使用:

include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
    // any mobile platform
}

该类还尝试通过以下方式检测平板电脑设备:

if($detect->isTablet()){
    // any tablet
}

检测移动设备没有灵丹妙药,但在决定使用外部API(如WURLF,DeviceAtlas或其他)之前,这是一个良好的开端。


推荐