2010-07-07 20 views
2

J'ai deux fichiers de configuration . L'un est ini l'un est php. Ils ressemblent à ci-dessous. J'ai besoin de mettre à jour le nom de fichier de base de données mais le reste des fichiers doit être inchangé. Une idée de comment le faire?lire, éditer et enregistrer des fichiers de configuration (php)

config.ini

; Turning Debugging on 
[test] 
developer = true 

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

et 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"; 
?> 

Répondre

3

Pourriez-vous lire le fichier dans une chaîne avec file_get_contents(), faire un str_replace() ou preg_replace() dessus, puis sauvegarder dessus avec file_put_contents()?

Je relier les tous à la documentation, mais je n'ai pas la réputation de faire plus d'un lien ...

EDIT: Si tout ce que vous connaissez est le nom de l'option, vous pouvez utiliser preg_match pour trouver le nom de l'option avec un regexp (quelque chose comme '/^database\.params\.dbname = (.*)$/'), puis faites un str_replace sur le nom que vous trouvez.

Quelque chose comme ceci:

$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); 
+0

plus de remplacement de chaîne J'ai besoin de trouver l'option, puis remplacer sa valeur. Je ne sais pas si cela pourrait être fait de cette façon – Radek

+0

Ahhh - Je supposais que vous saviez quel était le réglage actuel de l'option de changement. Je modifie ma réponse de façon appropriée. –

+0

merci @ Mickey et la dernière chose serait de rechercher seulement dans la section particulière :-) – Radek

1

Pour la lecture des fichiers ini, il y a parse_ini_file. Pour le reste, vous devrez écrire un script simple à cet effet ... ou utiliser sed.

+0

je lu quelque part que 'parse_ini_file' ne tient pas compte des commentaires. J'ai besoin de sauvegarder le fichier tel qu'il était. – Radek

+0

@Rad Alors vous n'avez aucune chance de le faire manuellement. – Artefacto

+0

Par manuellement, je veux bien sûr écrire un script: p – Artefacto