get_browser()用法
get_browser()函数是用来分析USER_AGENT的,它的执行方法是自动获取客户端的USER_AGENT,然后调用browscap.ini库进行分析得到结果
说明:
get_browser ([ string $user_agent [, bool $return_array = false ]] ) 第一个参数$user_agent默认是null,自动获取客户端的USER_AGENT,也可以指定$user_agent进行分析,第二个参数是true/false,true表示返回数组, false返回对象。一般的,PHP中并没有带browscap.ini这个文件,所以直接使用这个函数会有错误提示,需要在下载php_browscap.ini,然后在 php.ini 中指定php_browscap.ini的绝对路径,盘符可以省略,比如我是在 php.ini 的Dynamic Extensions的最后加了一句browscap=/www/php5/ext/php_browscap.ini 。重启apache后,在phpinfo()中能看到下面这句
browscap /www/php5/ext/php_browscap.ini /www/php5/ext/php_browscap.ini在不方便操作 php.ini 时,下面的这个函数起同样的作用。
<?php
if(ini_get("browscap")) { $browserinfo = get_browser(null, true); }else{ $browserinfo = php_get_browser($agent = NULL); } //print_r($browserinfo); echo "USER_AGENT => ".$_SERVER['HTTP_USER_AGENT'] . "\r\n<br>"; foreach($browserinfo as $key=>$value){ echo "$key => $value \r\n<br>"; } function php_get_browser($agent = NULL){ $browscapini='php_browscap.ini'; //*****************如果没有fnmatch()则建立该函数*****************// if(!function_exists('fnmatch')) { function fnmatch($pattern, $string) { return preg_match("#^".strtr(preg_quote($pattern, '#'), array('\*' => '.*', '\?' => '.'))."$#i", $string); } // end } //*****************分析php_browscap.ini,返回数组*****************// $agent=$agent?$agent:$_SERVER['HTTP_USER_AGENT']; $yu=array(); $q_s=array("#\.#","#\*#","#\?#"); $q_r=array("\.",".*",".?"); if (file_exists($browscapini)==false) {//$bini=file_get_contents('http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI');
//file_put_contents('php_browscap.ini',$bini); echo 'php_browscap.ini 不存在,请从下载'; exit; }$brows=parse_ini_file($browscapini,true);
foreach($brows as $k=>$t){ if(fnmatch($k,$agent)){ $yu['browser_name_pattern']=$k; $pat=preg_replace($q_s,$q_r,$k); $yu['browser_name_regex']=strtolower("^$pat$"); foreach($brows as $g=>$r){ if(@$t['Parent']==$g){ foreach($brows as $a=>$b){ if($r['Parent']==$a){ $yu=array_merge($yu,$b,$r,$t); foreach($yu as $d=>$z){ $l=strtolower($d); $hu[$l]=$z; } } } } } break; } } return @$hu; } ?>手册中的例子
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n"; $browser = get_browser(null, true); print_r($browser); ?>上例的输出类似于:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Array
( [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* [parent] => Firefox 0.9 [platform] => WinXP [browser] => Firefox [version] => 0.9 [majorver] => 0 [minorver] => 9 [cssversion] => 2 [frames] => 1 [iframes] => 1 [tables] => 1 [cookies] => 1 [backgroundsounds] => [vbscript] => [javascript] => 1 [javaapplets] => 1 [activexcontrols] => [cdf] => [aol] => [beta] => 1 [win16] => [crawler] => [stripper] => [wap] => [netclr] => )