note 110959 deleted from function.get-browser by tularis
| From: | tularis@php.net | Date: | Tue, 01 Jan 2013 17:16:25 +0000 |
| Subject: | note 110959 deleted from function.get-browser by tularis | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-192723@lists.php.net to get a copy of this message | ||
Note Submitter: Anonymous
----
You can parse browscap.ini at the following way:
if(empty($this -> _ini_file)):
if(is_file(DOCUMENT_ROOT.'/'.self::INI_FILE_PATH.'/'.self::INI_FILE_NAME.'.'.self::INI_FILE_SUFFIX)):
$this -> _ini_file =
parse_ini_file(DOCUMENT_ROOT.'/'.self::INI_FILE_PATH.'/'.self::INI_FILE_NAME.'.'.self::INI_FILE_SUFFIX,
true, INI_SCANNER_RAW);
ksort($this -> _ini_file);
$this -> __updateFile();
else:
throw new ExceptionClass(self::FILE_NOT_FOUND.'
'.DOCUMENT_ROOT.'/'.self::INI_FILE_PATH.'/'.self::INI_FILE_NAME.'.'.self::INI_FILE_SUFFIX,
404, __FILE__, __LINE__);
endif;
endif;
final private function __parseRequest($_browser) {
try {
if(isset($_SERVER['HTTP_USER_AGENT'])):
foreach($this -> _ini_file as $_key => $_value):
$_regex = '^'.str_replace(
array('\\','.','?','*','^','$','[',']','|','(',')','+','{','}','%'),
array('\\\\','\\.','.','.*','\\^','\\$','\\[','\\]','\\|','\\(','\\)','\\+','\\{','\\}','\\%'),
$_key
);
if(is_array($_value)):
if(preg_match('#'.$_regex.'$#si', $_browser)):
$_array = array_merge(array(
'browser_name_regex' => $_regex,
'browser_name_pattern' => $_key),
$_value,
array(
'http_referer' => $_SERVER['HTTP_REFERER'],
'remote_addr' => $_SERVER['REMOTE_ADDR'],
'remote_host' => $_SERVER['REMOTE_HOST'],
'request_uri' => $_SERVER['REQUEST_URI']
)
);
endif;
endif;
endforeach;
if(array_key_exists('Parent', $_array)):
$_array = array_merge($this -> __parseRequest($_array['Parent']), $_array);
endif;
endif;
return $_array;
}
catch(ExceptionClass $_exception) {
$_exception -> getException();
}
}