PHP使用Mobile-Detect来判断终端浏览器平台类型

  • 发布时间:2017-03-27 11:53:47
  • 作者:jason8482
  • 标签:php,判断移动设备

前言:

日常编写网站中,肯定会遇到需要适应不同平台的页面效果。主流的做法为

1:使用前端自适应框架(bootstrap等)

2:不用终端平台跳转至不同平台页面


针对第二种方式而言,使用PHP判断用户浏览器属于哪种平台介绍一种方法


实现方法:

1.判断User-Agent判断平台类型

<?php
function isMobile(){
$useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$useragent_commentsblock=preg_match('|\(.*?\)|',$useragent,$matches)>0?$matches[0]:'';
function CheckSubstrs($substrs,$text){
foreach($substrs as $substr){
if(false!==strpos($text,$substr)){
return true;
}else{
return false;
}
}
}
$mobile_os_list=array('Google Wireless Transcoder','Windows CE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','Opera Mobi','J2ME/MIDP','Smartphone','Go.Web','Palm','iPAQ');
$mobile_token_list=array('Profile/MIDP','Configuration/CLDC-','160×160','176×220','240×240','240×320','320×240','UP.Browser','UP.Link','SymbianOS','PalmOS','PocketPC','SonyEricsson','Nokia','BlackBerry','Vodafone','BenQ','Novarra-Vision','Iris','NetFront','HTC_','Xda_','SAMSUNG-SGH','Wapaka','DoCoMo','iPhone','iPod');
 
$found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock) || CheckSubstrs($mobile_token_list,$useragent);
 
if ($found_mobile){
return true;
}else{  
return false;
}
}
if (isMobile())
echo 'phone';
else
echo 'pc';
?>


2.使用Mobile-Detect库

1中的方法虽然可以适应常用平台,但是无法详细的判断出平台详细类型等。而使用Mobile-Detect库就可以轻松实现

github: https://github.com/serbanghita/Mobile-Detect

使用方法:

<?php
//引用库
require_once 'Mobile_Detect.php';

//初始化Mobile_Detect对象
$detect = new Mobile_Detect;

//属于可移动终端
if($detect->isMobile()) {
    echo 'mobile';
}

//所有平板设备
if( $detect->isTablet()) {
}
//是移动但非平板设备
if( $detect->isMobile() && !$detect->isTablet()) {
}
//IOS系统
if( $detect->isiOS()) {
}
//Android系统
if( $detect->isAndroidOS()) {
}
//WindowsPhone系统
if( $detect->isWindowsPhoneOS()) {
}


注意,mobile detection是一个移动设备检测平台,随着科技的进步会有不同的设备出现,因此你需要随时更新类库,这样才能保证检测的准确性。