如何使用 PHP 读取和写入 ini 文件

2022-08-30 14:26:40

我一直在寻找官方的php文档,但我找不到我想要的东西。

http://php.net/manual/en/function.parse-ini-file.php

我只是想要一个函数来编辑和读取php ini文件中的值,例如,

[default_colors]
sitebg = #F8F8F8
footerbg = #F8F8F8
link = #F8F8F8
url = #F8F8F8
bg = #F8F8F8
text = #F8F8F8
border = #F8F8F8

lu_link = #F8F8F8
lu_url = #F8F8F8
lu_bg = #F8F8F8
lu_text = #f505f5
lu_border = #F8F8F8
  1. 如何读取属于“lu_link”或“页脚”的值?
  2. 如何为这些地点编写新值?

答案 1

您可以简单地与 PHP4/5 一起使用。parse_ini_file

$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);

这是文档:http://php.net/manual/en/function.parse-ini-file.php

要将对象数组写回ini文件,请使用下面作为非常快速和简单的解决方案:

function write_php_ini($array, $file)
{
    $res = array();
    foreach($array as $key => $val)
    {
        if(is_array($val))
        {
            $res[] = "[$key]";
            foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
        }
        else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
    }
    safefilerewrite($file, implode("\r\n", $res));
}

function safefilerewrite($fileName, $dataToSave)
{    if ($fp = fopen($fileName, 'w'))
    {
        $startTime = microtime(TRUE);
        do
        {            $canWrite = flock($fp, LOCK_EX);
           // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
           if(!$canWrite) usleep(round(rand(0, 100)*1000));
        } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5));

        //file was locked so now we can store information
        if ($canWrite)
        {            fwrite($fp, $dataToSave);
            flock($fp, LOCK_UN);
        }
        fclose($fp);
    }

}

答案 2

PEAR Config_Lite包可以超级轻松地为您完成几乎所有的工作(包括阅读和写作)。在这里查看: http://pear.php.net/package/Config_Lite


推荐