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

?>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM