zoukankan      html  css  js  c++  java
  • 获取用户所属浏览器和设备

    function getBrowser($agent){
    	$known = array('baidubrowser','QQBrowser','Maxthon','UC','UCBrowser','UBrowser','MetaSr', 'TheWorld','360se','360browser','115Browser','LBBrowser','2345Explorer','2345chrome','SogouMobileBrowser','TaoBrowser','baiduboxapp','MiuiBrowser'
    			,'EUI Browser','CoolNovo','Edge','Firefox','Chrome','Safari','MSIE','Opera','Netscape', 'Konqueror', 'Gecko');
    	$browser = newStripos($agent,$known,true);
    	if ($browser == 'MetaSr'){
    		$browser = 'sougouBrowser';
    	}
    	return $browser ? $browser : 'other';
    }
    

      

    function newStripos($string,$arr,$returnValue = false){
    	if (empty($string)) return false;
    	foreach ((array)$arr as $v){
    		if (stripos($string,$v) !== false){
    
    			$return = $returnValue ? $v : true;
    			return $return;
    		}
    	}
    	return false;
    }
    

      

    function getDevice($agent){
    	//Mozilla/5.0 (Linux; Android 6.0; Le X620; Build/HEXCNFN5902606111S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.92 Mobile Safari/537.36 SogouMSE,SogouMobileBrowser/5.6.8
    	$device = '';
    	if (stripos($agent,'iphone')){
    		$device = 'iphone';
    	}elseif (stripos($agent,'ipad')){
    		$device = 'ipad';
    	}elseif(stripos($agent,'android')  !== false && preg_match('/;(.*);?s+Build/iU', $agent,$match)){
    		$info = explode(';', $match[1]);
    		$device = $info[count($info)-1];
    		print_r($info);
    	}  else {
    		$known = array( 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
    			'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
    			'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
    			'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
    			'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
    			'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
    			'benq', 'haier', '^lct', '320x320', '240x320', '176x220', 'windows phone');
    		$device = newStripos($agent,$known,true);
    	}
    	return $device ? $device : 'other';
    	
    }
    

      

  • 相关阅读:
    二进制求和
    删除排序数组中的重复项--leetcode算法题
    vue render
    数字实现千分位分隔符
    用nodejs实现向文件的固定位置插入内容
    工作中用到的正则表达式
    组件toast(类似于element-ui的message组件)的实现
    用svg实现一个环形进度条
    批量删除当前文件夹下面的.svn文件夹
    windows下的包管理器scoop
  • 原文地址:https://www.cnblogs.com/zihai/p/7136347.html
Copyright © 2011-2022 走看看