是否可以使用注释解析INI文件并进行编辑?

时间:2016-09-27 14:32:01

标签: php parsing ini php-ini

我创建了一个表单,我从一个INI文件中读取并在表单中显示它的值。 现在我想编辑该文件。

所以我在文本框中显示值,让用户编辑文件。

现在我正在使用INI Library来编写我的文件,但我的代码更改了INI文件的结构,同时删除了注释。

当我写入文件时,是否有可能只更改了那些值,而其他内容如评论和部分保持不变?

这是我的代码:

$CFG_file = $this->data['file_data'] = parse_ini_file("CFG/fms.cfg" ,true);


        if (isset($_POST['submit'])) 
        {   

            //var_dump($_POST);
            $data_file = $this->parameter_m->array_from_post(array('VAL1','VAL2','InMedia','VAL','VAL','VAL5','VAL3'));

            $this->load->helper('file');
            $file = "CFG/fms.cfg";
            $this->load->library('ini');
            $ini = new INI($file);
            $ini->write($file, $data_file );    
        }

写入文件的库代码:

function write($file = NULL, $file_content = array(), $sections = FALSE) {
    $this->file_content = (!empty($file_content)) ? $file_content : $this->file_content;
    $this->file = ($file) ? $file : $this->file;
    $this->sections = $sections;
    $content = NULL;

    if ($this->sections) {
        foreach ($this->file_content as $section => $file_content) {
            $content .= '[' . $section . ']' . PHP_EOL;
            foreach ($file_content as $key => $val) {
                if (is_array($val)) {
                    foreach ($val as $v) {
                        $content .= $key . '[]=' . (is_numeric($v) ? $v : $v ) . PHP_EOL;
                    }
                } elseif (empty($val)) {
                    $content .= $key . '=' . PHP_EOL;
                } else {
                    $content .= $key . '=' . (is_numeric($val) ? $val : $val ) . PHP_EOL;
                }
            }
            $content .= PHP_EOL;
        }
    } else {
        foreach ($this->file_content as $key => $val) {
            if (is_array($val)) {
                foreach ($val as $v) {
                    $content .= $key . '[] = ' . (is_numeric($v) ? $v : '"' . $v . '"') . PHP_EOL;
                }
            } elseif (empty($val)) {
                $content .= $key . ' = ' . PHP_EOL;
            } else {
                $content .= $key . ' = ' . (is_numeric($val) ? $val : '"' . $val . '"') . PHP_EOL;
            }
        }
    }

    return (($handle = fopen($this->file, 'w+')) && fwrite($handle, trim($content)) && fclose($handle)) ? TRUE : FALSE;
}

这是我的档案:

    []
VAL1= 0.0.0.0
VAL2= 5070

;media settings

;ON/OFF/AUTO
VAL3= OFF

VAL4= 8000 
VAL5= 4000
VAL6= 360

;Transport settings

;ON/OFF
VAL7= OFF

当我执行我的代码时,它变为:

VAL1= "0.0.0.0"
VAL2 = 5071
VAL3 = 
VAL4 = 8000
VAL5 = 4000
VAL6 = 360
VAL7 = "ON"

0 个答案:

没有答案