PHP判断移动设备来源的方法
admin
2023-07-02 07:04:44
0

现在移动设备大热的年代,可能我们在做web前端开发的时候经常会需要用到对移动设备的页面匹配。当然我们可以用响应式页面设计来处理前端的匹配问题,但是响应式页面只是不显示某些代码,但是还是会加载到用户的移动设备中。为了更好的照顾到用户手机浏览的体验,减少不必要的加载。我们可以再通过PHP的方式来减少用户的代码加载,提高用户浏览页面时的体验。由于现在移动设备的种类繁多、而且浏览器五花八门,所以仅仅是通过User-Agent来判断已经不能完全解决问题了。

function isMobile()

    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备

    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))

    {

        return true;

    } 

    // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息

    if (isset ($_SERVER['HTTP_VIA']))

    { 

        // 找不到为flase,否则为true

        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;

    } 

    // 判断手机发送的客户端标志,兼容性有待提高

    if (isset ($_SERVER['HTTP_USER_AGENT']))

    {

        $clientkeywords = array ('nokia',

            'sony',

            'ericsson',

            'mot',

            'samsung',

            'htc',

            'sgh',

            'lg',

            'sharp',

            'sie-',

            'philips',

            'panasonic',

            'alcatel',

            'lenovo',

            'iphone',

            'ipod',

            'blackberry',

            'meizu',

            'android',

            'netfront',

            'symbian',

            'ucweb',

            'windowsce',

            'palm',

            'operamini',

            'operamobi',

            'openwave',

            'nexusone',

            'cldc',

            'midp',

            'wap',

            'mobile'

            ); 

        // 从HTTP_USER_AGENT中查找手机浏览器的关键字

        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))

        {

            return true;

        } 

    } 

    // 协议法,因为有可能不准确,放到最后判断

    if (isset ($_SERVER['HTTP_ACCEPT']))

    { 

        // 如果只支持wml并且不支持html那一定是移动设备

        // 如果支持wml和html但是wml在html之前则是移动设备

        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))

        {

            return true;

        } 

    } 

    return false;

?>

目前这个方法可以用于大多数的移动设备判断,使用时也可以根据需要自行添加一些UA的判断参数。

相关内容

热门资讯

2026年6月安卓摄影新选择:... 2026年6月安卓摄影新选择:CCD质感手机推荐 2026年6月安卓摄影新选择:CCD质感手机推荐 ...
总书记的人民情怀 | “要坚持... 本报记者 吴 丹原标题:“要坚持健康第一的教育理念”(总书记的人民情怀)
菲律宾防长“装可怜”:中美实力... 【文/观察者网 齐倩】菲律宾政府近年来仗着美国撑腰,在南海议题上“兴风作浪”。中美紧张关系缓和后,菲...
老板燃气灶一直报警是怎么回事 老板燃气灶一直报警是怎么回事原因可能有以下几点:1.熄火保护电路故障造成误报警,导致其长鸣声不断;2...
老板燃气灶一直报警怎么回事 原因可能有以下几点:1.熄火保护电路故障造成误报警,导致其长鸣声不断;2.燃气意外熄灭导致熄火保护功...
燃气灶报警器一直闪灯 这种情况原因有很多种,1、可能是某个零件出现了问题。2、当工业环境中燃气气体泄露,燃气报警器检测到气...
乐邦燃气灶一直报警怎么办 如果你的乐邦燃气灶一直报警,应该立即采取以下措施以确保安全:1. 关闭天燃气阀门首先,要立刻关闭天然...
为啥万家乐燃气热水器打不着火了... 常见原因:1、管道中的水压太低了,这个时候水压开关就没有办法正常工作,也就没有电压能够输送到脉冲点火...
美国计划加速从欧洲撤军 【文/观察者网 王恺雯】德国《星期日世界报》(Welt am Sonntag)5月30日报道,五角大...
日本何时道歉?解放军代表当场质... 【环球时报-环球网报道 记者 郭媛丹 苏雅瑄】31日上午,解放军专家学者代表团成员、国防大学沈志雄大...