Ответ 1
Пакет PEAR Config_Lite может выполнять почти всю работу (как чтение, так и запись) для вас очень легко. Посмотрите здесь: http://pear.php.net/package/Config_Lite
Я просматривал официальную документацию 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
Пакет PEAR Config_Lite может выполнять почти всю работу (как чтение, так и запись) для вас очень легко. Посмотрите здесь: http://pear.php.net/package/Config_Lite
Вы можете просто использовать parse_ini_file
с PHP4/5.
$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);
}
}
Как насчет этого:
$key='option';
$val='1.2.3.4.5';
system("sed -ie 's/\({$key}=\)\(.*\)/\1{$val}/' file.in");
Вы можете просто использовать ini_set('lu_link','#000000');
или ini_get('lu_link')
.
Я чувствую, что если у вас ограниченный опыт работы с PHP, это нехорошо возиться с файлом .ini
.