<?php ################################################################################################## /* 功 能:讀取 ini 文件. [ 不 ] 支持節. 配置值中可能存在連續的多個空格 版 本:1.0 作 者:Jinsen 日 期:2010-09-20 入 參:ini 文件名:字符串 返 回 值:一個一維:關聯數組 修 改: 注 意:ini 文件 !!! 所有的配置節或配置項 均為小寫!!! 支持 "#" 或 ";" 開頭的整行注釋; 支持 "//" 或 "--" 之后的行尾注釋; 多個相同的配置,后面的配置覆蓋前面定義的配置; */ ################################################################################################## function get_config($configfilename) { $debug=0; #創建空的配置棧 $configs=array(); $rows=@file($configfilename); #逐行讀取記錄 foreach($rows as $row) { #清理空白字符 $config=trim($row); #過濾掉空行;處理為空行 if ($config) { #過濾注釋行;處理非注釋行 if(substr($config,0,1)<>"#") { #刪除行尾注釋 if ($pos==strpos($config,"#",0)) {$config=substr($config,0,$pos);} #根據“=”分割配置項和配置值,並進行格式化處理 if ($pos==strpos($config,"=",0)) { #獲取key:配置項 $key=strtolower(trim(substr($config,0,$pos))); #獲取value:配置值 $value=trim(substr($config,$pos+1)); #將配置入棧,等待返回 $configs["$key"]=$value; #debug模式,打印調式信息 if ($debug) {print "\t$key:$value\n";} } } } } return $configs; } ?>
<?php ################################################################################################## /* 功 能:讀取 ini 文件. [ 不 ] 支持節 版 本:1.1 作 者:Jinsen 日 期:2010-09-20 入 參:ini 文件名:字符串 返 回 值:一個一維:關聯數組 修 改:2011-05-31: 配置值中 利用正則表達式替換 多個空格為單一的空格 注 意:ini 文件 !!! 所有的配置節或配置項 均為小寫!!! 支持 "#" 或 ";" 開頭的整行注釋; 支持 "//" 或 "--" 之后的行尾注釋; 多個相同的配置,后面的配置覆蓋前面定義的配置; */ ################################################################################################## function get_config($configfilename) { $debug=0; #創建空的配置棧 $configs=array(); $rows=@file($configfilename); #逐行讀取記錄 foreach($rows as $row) { #清理空白字符 $config=trim($row); #過濾掉空行;處理為空行 if ($config) { #過濾注釋行;處理非注釋行 if(substr($config,0,1)<>"#") { #刪除行尾注釋 if ($pos==strpos($config,"#",0)) {$config=substr($config,0,$pos);} #根據“=”分割配置項和配置值,並進行格式化處理 if ($pos==strpos($config,"=",0)) { #獲取key:配置項 $key=strtolower(trim(substr($config,0,$pos))); #獲取value:配置值 $value=trim(preg_replace('/[ ]{1,}/'," ",substr($config,$pos+1))); #將配置入棧,等待返回 $configs["$key"]=$value; #debug模式,打印調式信息 if ($debug) {print "\t$key:$value\n";} } } } } return $configs; } ?>
<?php ################################################################################################## /* 功 能:讀取 ini 文件. 支持節 版 本:2.0 作 者:Jinsen 日 期:2011-05-31 入 參:ini 文件名:字符串 返 回 值:一個二維數組.第一維是節:簡單字符串類型,第二維是節內的配置:關聯數組 修 改: 注 意:ini 文件 !!! 所有的配置節或配置項 均為小寫!!! 支持 "#" 或 ";" 開頭的整行注釋; 支持 "//" 或 "--" 之后的行尾注釋; 沒有節的配置(第一個節之前的配置) 定義為 [default]節; 如果出現多個相同的節,后面的節覆蓋前面定義的節; 如果節下出現多個相同的配置,后面的配置覆蓋前面定義的配置; */ ################################################################################################## function getiniconfig($configfilename) { # debug 輸出控制 $debug=0; #創建空的配置棧 $configs=array(); $rows=@file($configfilename); #逐行讀取記錄 foreach($rows as $row) { #清理空白字符 $config=trim($row); #過濾掉空行;處理為空行 if ($config) { #過濾注釋行;處理非注釋行 if(substr($config,0,1)<>"#") { #刪除行尾注釋 if ($pos=strpos($config,"//",0)) {$config=substr($config,0,$pos);} $configs[]=$config; } } } //if ($debug) print_r ($configs); # **********************************************************************************8 $ini=array(); $section='default'; //定義默認節 $section_config=array(); foreach($configs as $value) { # 新的節 if (substr($value,0,1)=='[') { if ($debug) print "$value\n"; $ini[$section]=$section_config; $section=strtolower(trim($value,"[]")); $section_config=array(); } # 節配置項 else { #根據“=”分割配置項和配置值,並進行格式化處理. if ($pos=strpos($value,"=",0)) //該處的算法為 計算 $pos 的值,如果大於0則進行"{}"內的代碼判斷 { #獲取key:配置項 $key=strtolower(trim(substr($value,0,$pos))); #獲取value:配置值 $value=trim(substr($value,$pos+1)); #將配置入棧,等待返回 if ($debug) print "$key=$value\n"; $section_config[$key]=$value; } } } # 抓取最后節的配置 $ini[$section]=$section_config; print "\n"; if ($debug) print_r ($ini); # **********************************************************************************8 return $ini; } ?>