читать, редактировать и сохранять файлы конфигурации (php) - PullRequest
2 голосов
/ 07 июля 2010

У меня есть два файла конфигурации .Один INI Один PHP .Они похожи на ниже.Мне нужно обновить имя файла базы данных , но остальные файлы должны быть без изменений .Любая идея, как это сделать?

config.ini

; Turning Debugging on
[test]
developer = true

; Production site configuration data
[production]
database.params.dbname   = /var/lib/firebird/data/radek_db.gdb

и setting.php

<?php
/**
The settings file
*/

#This will be done automatically if u want to override it uncomment the next line few lines
/*
    $Path   = 'mainline';

#Database to connect to:
    $Database        =       "radek_db";
?>

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

Не могли бы вы прочитать файл в строку с помощью file_get_contents (), выполнить для него str_replace () или preg_replace (), а затем сохранить поверх него с помощью file_put_contents ()?

Я бы связал их всех с документацией, но у меня нет репутации, чтобы сделать более одной ссылки ...

РЕДАКТИРОВАТЬ : Если все, что вам известно, это имя опции, вы можете использовать preg_match , чтобы найти имя опции с регулярным выражением (что-то вроде '/^database\.params\.dbname = (.*)$/'), а затем сделать str_replace на имя, которое вы найдете.

Примерно так:

$file = file_get_contents('/path/to/config/file');
$matches = array();
preg_match('/^database\.params\.dbname = (.*)$/', $file, $matches);
$file = str_replace($matches[1], $new_value, $file);
file_put_contents('/path/to/config/file', $file);
1 голос
/ 07 июля 2010

Для чтения ini-файлов есть parse_ini_file. В остальном вам придется написать простой сценарий для этой цели ... или использовать sed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...