create ini file, write values in PHP

I cannot find a way that easily lets me create a new file, treat it as an ini file (not php.ini or simiilar... a separate ini file for per user), and create/delete values using PHP. PHP seems to offer no easy way to create an ini file and read/write/delete values. So far, it's all just "read" - nothing about creating entries or manipulating keys/values.


Found following code snippet from the comments of the PHP documentation:

function write_ini_file($assoc_arr, $path, $has_sections=FALSE) { 
    $content = ""; 
    if ($has_sections) { 
        foreach ($assoc_arr as $key=>$elem) { 
            $content .= "[".$key."]n"; 
            foreach ($elem as $key2=>$elem2) { 
                if(is_array($elem2)) 
                { 
                    for($i=0;$i<count($elem2);$i++) 
                    { 
                        $content .= $key2."[] = "".$elem2[$i].""n"; 
                    } 
                } 
                else if($elem2=="") $content .= $key2." = n"; 
                else $content .= $key2." = "".$elem2.""n"; 
            } 
        } 
    } 
    else { 
        foreach ($assoc_arr as $key=>$elem) { 
            if(is_array($elem)) 
            { 
                for($i=0;$i<count($elem);$i++) 
                { 
                    $content .= $key."[] = "".$elem[$i].""n"; 
                } 
            } 
            else if($elem=="") $content .= $key." = n"; 
            else $content .= $key." = "".$elem.""n"; 
        } 
    } 

    if (!$handle = fopen($path, 'w')) { 
        return false; 
    }

    $success = fwrite($handle, $content);
    fclose($handle); 

    return $success; 
}

Usage:

$sampleData = array(
                'first' => array(
                    'first-1' => 1,
                    'first-2' => 2,
                    'first-3' => 3,
                    'first-4' => 4,
                    'first-5' => 5,
                ),
                'second' => array(
                    'second-1' => 1,
                    'second-2' => 2,
                    'second-3' => 3,
                    'second-4' => 4,
                    'second-5' => 5,
                ));
write_ini_file($sampleData, './data.ini', true);

Good luck!


PEAR has two (unit tested) packages which do the task you are longing for:

  • Config_Lite - ideal if you only want .ini files
  • Config - reads also .php and .xml files
  • I'd rather use well tested code than writing my own.


    I can't vouch for how well it works, but there's some suggestions for implementing the opposite of parse_ini_file() (ie write_ini_file , which isn't a standard PHP function) on the documentation page for parse_ini_file .

    You can use write_ini_file to send the values to a file, parse_ini_file to read them back in - modify the associative array that parse_ini_file returns, and then write the modified array back to the file with write_ini_file .

    Does that work for you?

    链接地址: http://www.djcxy.com/p/82584.html

    上一篇: 从iframe可编辑的区域获取可编辑区域的标签

    下一篇: 创建ini文件,在PHP中写入值