zoukankan      html  css  js  c++  java
  • PHP源码:读取 ini 文件配置信息

    <?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;
            
    }
    
    ?>
  • 相关阅读:
    成长型思维
    Spring Boot 入门详细分析
    我们为什么要学习 Spring Boot
    躲不掉的 lambda 表达式
    Java 并发工具包 | J.U.C
    Java 并发编程整体介绍 | 内含超多干货
    彻底搞懂单例模式如何安全的实现
    atomic 包、synchronized | Java 中线程安全
    AD在更新PCB的时候,每次封装都会改变位置?
    1206封装电容在物料可靠性设计比较低
  • 原文地址:https://www.cnblogs.com/jinzhenshui/p/2444933.html
Copyright © 2011-2022 走看看