note 53010 deleted from function.parse-ini-file by nlopess
| From: | nlopess@php.net | Date: | Tue, 31 May 2005 09:56:02 +0000 |
| Subject: | note 53010 deleted from function.parse-ini-file by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-89665@lists.php.net to get a copy of this message | ||
Note Submitter: dawalama at gmail dot com
----
/*
Search for a key, value or both in an ini file. You can also have this function return the matched
section. Eg call:
search_ini_file( <filename>, Array('key'=><some_key>));
search_ini_file( <filename>, Array('value'=><some_value>));
search_ini_file( <filename>, Array('key'=><some_key>,
'value'=><some_value>));
====================================================
if you want to return a section
search_ini_file( <filename>, Array('key'=><some_key>), true);
@Dawa Lama
*/
function search_ini_file ( $filename, $search_param, $return_section = false )
{
$search_key = (isset($search_param['key'])?$search_param['key']:false);
$search_value =
(isset($search_param['value'])?$search_param['value']:false);
if ( !($search_key !==false || $search_value !==false) ){
return false;
}
$retvalue = false;
$handle = fopen($filename, 'r');
if ( ($search_key !== false) && ($search_value !== false) ){
$key_found = false;
$retvalue['key'] = false;
$retvalue['value'] = false;
while( !feof($handle) ) {
$line = trim(fgets($handle, 4096));
if (preg_match("/^\[$search_key\].*?$/s",$line)){
$key_found = true;
$retvalue['key'] = true;
continue;
}
if ($key_found){
if (preg_match("/^\[.*?$/", trim($line))){
break;
}else{
if ($return_section){
if ($line != '') {
$retvalue[$search_key][] = $line;
}
}
}
if (preg_match("/^$search_value\s*?=.*$/", $line)){
$retvalue['value'] = true;
break;
}
}
}
}elseif ($search_key !== false){
$keyfound = false;
while ( !feof($handle) ){
$line = trim(fgets($handle, 4096));
if (preg_match("/^\[$search_key\].*?$/s",$line)){
$retvalue = true;
$keyfound = true;
if (!$return_section){
break;
}else{
continue;
}
}
if ( $keyfound ){
if (preg_match("/^\[.*?$/", trim($line))){
break;
}else{
if ($return_section){
if ($line != ''){
$retvalue[$search_key][] = $line;
}
}
}
}
}
}elseif ($search_value !== false){
while ( !feof($handle) ){
$line = trim(fgets($handle, 4096));
if (preg_match("/^$search_value\s*?=.*$/", $line)){
$retvalue = true;
if ($return_section){
$retvalue = $line;
}
break;
}
}
}
fclose($handle);
return $retvalue;
}