php_get作用,php get_browser()用法

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这个文件,所以直接使用这个函数会有错误提示,需要在http://browsers.garykeith.com/downloads.asp下载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
";foreach($browserinfo as $key=>$value){echo "$key => $value \r\n
";}

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 不存在,请从http://browsers.garykeith.com/stream.asp下载'; 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; }

?>

手册中的例子

上例的输出类似于:

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] =>)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值