php判断打开网页的浏览器是pc端可以通过php获取http协议的user--agent,然后借助于php中的正则表达式匹配函数preg_match来与手机端的浏览器信息特征进行匹配。
一、原理说明
1、User-Agent是Http协议中的一部分,属于头域的组成部分。基本格式为:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息。
2、在php中通过全局变量_SERVER['HTTP_USER_AGENT补朱锚卦39;]就可以直接获取user-agent信息。建立一个ua.php的文件,然后写入如下代码。<font size="+10" color="red"><?phpecho $_SERVER['HTTP_USER_AGENT']?></font>
3、然后在电脑端访问,如下图所示,是pc端显示的信息。
4、用手机浏览器直接访问的效果如下图所示。对比pc端的信息你会发现,手机牌子、mobile、android等等都可以作为手机端浏览器的特点。这正是php用user-agent来判断是手机端还是pc端访问的方法。
5、php提供了preg_match函数来执行匹配正则表达式,其函数声明如下图所示。它的返回值是正则表达式匹配的次数,如果没有匹配则返回0,如果匹配了就会返回1,而且一旦匹配一次将不在进行继续匹配。
二、实例
1、首先自己可以从网或者自行组建一个相对完整的user-agent手机端信息的正则表达式表,如下图所示,保存到变量regex_match中,变量后面的.是进行合并,别看有多行,其实是一个变量 。
2、然后就可以直接用 preg_match函数将上面的正则表达式的变量和_SERVER['HTTP_USER_AGENT']进行匹配了。
3、整个的代码如下,将其保存为t.php。<?php function is_mobile(){ $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|"; $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|"; $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|"; $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|"; $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220"; $regex_match.=")/i"; return preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT'])); } if ( is_mobile() ) { header('Location:mo.html'); }else { header('Location:pc.html'); } ?>
4、为了以后方便使用,将其私网褡爸整合成一个php函数,为了方便测试,通过函数判断会加载不同的html页,其中mo.html是手机端。它只是显示这是手机端的提示代码如下:<font size="+10" color="red">this is mobile </font>pc.html用于显示pc端的提示。<font size="+10" color="red"> this is pc </font>
5、接下来用电脑端访问t.php,它会自动定向到pc.html中。
6、在手机端访问t.php,它会自动定向到mo.html中。