php 识别手机操作系统,PHP提取客户端的操作系统信息,并识别移动设备

在编写网站类程序的过程中,经常需要区别对待PC与移动设备。然而在科技高速发展的今天,PC设备和移动设备种类繁杂,如何准确识别客户使用的设备信息,就成了困扰我们广大程序猿同胞们的一个难题。

在这里,笔者结合自己的工作经验,参照诸多来自互联网上的各种资料,进行了简要的整合,通过运行该程序,可以识别出大多数主流的设备信息,现将代码分享给大家:

public static function getOS(){

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

return array();

}

$agent = $_SERVER['HTTP_USER_AGENT'];

$type= 'pc';//设备类型默认为PC

$version= '';//系统版本

if( preg_match('/AppleWebKit.*Mobile|Android/i',$agent) || preg_match('/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/i',$agent)){

//移动设备

$type= 'mobile';

if( strpos($agent,'iPhone') !== false ){

//iPhone手机

$agent_os= 'iPhone OS';

preg_match('/iPhone OS (?P\d(_\d+)+)/i', $agent,$match);

if($match && isset($match['version'])){

$version= str_replace('_','.',$match['version']);

}

} else if( strpos($agent,'iPad') !== false ){

//iPad平板

$agent_os= 'iPad OS';

preg_match('/OS (?P\d(_\d+)+)/i', $agent,$match);

if($match && isset($match['version'])){

$version= str_replace('_','.',$match['version']);

}

} else if( strpos($agent,'Android') !== false ){

//Android设备,手机和平板

preg_match('/Android (?P\d(\.\d+)+)/i',$agent,$match);

$agent_os= 'Android';

if( $match && isset($match['version']) ){

$version= $match['version'];

}

} else if( strpos($agent,'Windows Phone') ){

//Window手机操作系统

$agent_os= 'Windows Phone';

preg_match('/Windows Phone (?P\d(\.\d+)+)/i',$agent,$match);

if( $match && isset($match['version']) ){

$version= $match['version'];

}

} else if( stripos($agent,'symbian') !== false ){

//老旧的塞班系统

$agent_os= 'SymbianOS';

} else {

$agent_os= 'other';

}

} else if( strpos($agent, 'Windows') !== false ){

//pc端的windows系统分类

$os_win = array(

'NT 10.0'=> 'Windows 10',

'NT 6.4'=> 'Windows 10',

'NT 6.3'=> 'Windows 8',

'NT 6.2'=> 'Windows 8',

'NT 6.1'=> 'Windows 7',

'NT 6.0'=> 'Windows Vista',

'NT 5.1'=> 'Windows XP',

'NT 5.0'=> 'Windows 2000',

'NT'=> 'Windows NT',

);

$agent_os= 'Windows';

foreach($os_win as $core => $os){

if(stripos($agent,$core) !== false){

$agent_os= $os;

break;

}

}

} else if( stripos($agent, 'mac') !== false){

$agent_os= 'Mac OS';

} else if( stripos($agent, 'ubuntu') !== false){

$agent_os= 'Ubuntu';

} else if( stripos($agent, 'debian') !== false){

$agent_os = 'Debian';

} else if( stripos($agent, 'linux') !== false) {

$agent_os= 'Linux';

} else {

$agent_os= 'other';

}

return array('type' => $type, 'os' => $agent_os, 'version' => $version);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值