|
<?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;
}
?>
|
|
|