设为首页 收藏本站
查看: 656|回复: 0

[经验分享] PHP源码:读取 ini 文件配置信息

[复制链接]

尚未签到

发表于 2015-8-30 08:45:40 | 显示全部楼层 |阅读模式
<?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;
}
?>
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106146-1-1.html 上篇帖子: js与php数据交互,无刷新上传及显示,跨域传参 下篇帖子: PHP获取访问用户IP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表