天天看点

判断浏览器是否支持wap

近期在工作中要处理一个问题根据用户的浏览器判断是访问wap2还是wap1。虽然之前有处理过访问的浏览器是否支持Wap,但之前的方法不太适合,目前的需求。在网络上找这方面的资源与分析比较成熟的几个wap站。

分析:一般根据浏览器的访问头信息分析是否支持wap,由于目前的浏览器各标准不同与信息差别比较大,就有一定的难度。我的方法是尽量抓取浏览器的头信息,分析共同点处理。目前分析的信息,主要有用的两个头信息是$_SERVER['HTTP_USER_AGENT']与$_SERVER['HTTP_ACCEPT'] 下面是我处理方法:

$contentType = '';

//简彩版切换

if (isset($_GET['t'])) {

$t = intval($_GET['t']);

if (1 == $t) {

//检查是否支持wap1.0

if ((!empty($_SERVER['HTTP_ACCEPT']) && stripos($_SERVER['HTTP_ACCEPT'] 'vnd.wap.w') !== false) || (isset($_SERVER['HTTP_USER_AGENT']) && false !== stripos($_SERVER['HTTP_USER_AGENT'], 'OPERA'))) $contentType = '1';

}else{

if (!empty($_SERVER['HTTP_ACCEPT']) && stripos($_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml') !== false) $contentType = '2';

}

}

if(empty($contentType) && isset($_GET['ct'])) $contentType = $_GET['ct'];

if (empty($contentType) && isset($_SERVER['HTTP_USER_AGENT'])) {

$ua = strtoupper($_SERVER['HTTP_USER_AGENT']);

if (false !== strpos($ua, 'MOZILLA') || false !== strpos($ua, 'OPERA')) {

$contentType = '2';

}else{

$contentType = '1';

}

}

if (empty($contentType) && isset($_SERVER['HTTP_ACCEPT'])) {

$acceptInfo = strtolower($_SERVER['HTTP_ACCEPT']);

if ((strpos($acceptInfo,'vnd.wap.wml')!==false) && (strpos($acceptInfo,'text/html')===false || (strpos($acceptInfo,'vnd.wap.wml') < strpos($acceptInfo,'text/html')))) {

$contentType = '1';

} else {

$contentType = '2';

}

}

if(empty($contentType)) $contentType = '2';

return $contentType;

这个方法是根据http协议的头信息处理,有些手机获取不到头信息是因为移动服务的网关过滤了。

继续阅读