note 53013 modified in function.parse-ini-file by danbrown
| From: | danbrown@php.net | Date: | Sun, 23 Jan 2011 17:14:46 +0000 |
| Subject: | note 53013 modified in function.parse-ini-file by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-176170@lists.php.net to get a copy of this message | ||
<?php
/*
* Search_ini_file refined.
*/
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 != '') {
list($k, $v) = split("=", $line);
$retvalue[$search_key][$k] =
preg_replace("/;.*$/", "", $v);
} } }
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;
if (!$return_section){
break;
}else{
$retvalue = Array();
$keyfound = true;
continue;
} }
if ( $keyfound ){
if (preg_match("/^\[.*?$/", trim($line))){
break;
}else{
if ($return_section){
if ($line != ''){
list($k, $v) = split("=", $line);
$retvalue[$search_key][$k] =
preg_replace("/;.*$/", "", $v);
} } } } }
}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 = array();
if ($line != ''){
list($k, $v) = split("=", $line);
$retvalue[$k] = preg_replace("/;.*$/",
"", $v);
} }
break;
} } }
fclose($handle);
return $retvalue;
}
?>
--was--
/*
* Search_ini_file refined.
*/
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 != '') {
list($k, $v) = split("=", $line);
$retvalue[$search_key][$k] =
preg_replace("/;.*$/", "", $v);
} } }
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;
if (!$return_section){
break;
}else{
$retvalue = Array();
$keyfound = true;
continue;
} }
if ( $keyfound ){
if (preg_match("/^\[.*?$/", trim($line))){
break;
}else{
if ($return_section){
if ($line != ''){
list($k, $v) = split("=", $line);
$retvalue[$search_key][$k] =
preg_replace("/;.*$/", "", $v);
} } } } }
}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 = array();
if ($line != ''){
list($k, $v) = split("=", $line);
$retvalue[$k] = preg_replace("/;.*$/",
"", $v);
} }
break;
} } }
fclose($handle);
return $retvalue;
}
http://php.net/manual/en/function.parse-ini-file.php