Hi,
ich stehe im Moment vor einem Problem: für mein aktuelles Projekt habe ich eine Klasse, mit der man .ini-Dateien in PHP auswerten und editieren kann.
Das Einlesen ist einfach, dafür gibt es schließlich parse_ini_file(), aber die Datei zu aktualisieren erwies sich als schwieriger.
Bisher habe ich das immer gelöst, in dem ich mit zwei verschachtelten foreach-Schleifen das Array mit den Daten in einen String nach der MS INI-Syntax umgewandelt. Mit diesem String habe ich dann die aktuelle Datei überschrieben.
Das Problem dabei war, dass dabei jedes Mal alle Kommentare verloren gingen, da diese ja bei parse_ini_file() nicht mitgeparst wurden und ich die neue Datei nicht auf Basis der Alten erstellte, sondern aus dem Array rekonstruierte.
Jetzt habe ich das ganze etwas verändert:
Das Array $this->ini_last enthält alle veränderten Eigenschaften zur letzten Version. Das Problem bei dieser Methode liegt jedoch bei den Regexp, denn es tritt folgender Fehler auf:
Das liegt soweit ich weiß an $text, dass er dort irgendwie auch noch modifiern sucht. Ich habe sowohl preg_quote als auch addslashes ausprobiert, der Fehler blieb.
Weiß jemand, was ich da falsch mache oder wüsste eine bessere Methode, bei der die Kommentare erhalten bleiben?
MfG dying_hero
ich stehe im Moment vor einem Problem: für mein aktuelles Projekt habe ich eine Klasse, mit der man .ini-Dateien in PHP auswerten und editieren kann.
Das Einlesen ist einfach, dafür gibt es schließlich parse_ini_file(), aber die Datei zu aktualisieren erwies sich als schwieriger.
Bisher habe ich das immer gelöst, in dem ich mit zwei verschachtelten foreach-Schleifen das Array mit den Daten in einen String nach der MS INI-Syntax umgewandelt. Mit diesem String habe ich dann die aktuelle Datei überschrieben.
Das Problem dabei war, dass dabei jedes Mal alle Kommentare verloren gingen, da diese ja bei parse_ini_file() nicht mitgeparst wurden und ich die neue Datei nicht auf Basis der Alten erstellte, sondern aus dem Array rekonstruierte.
Jetzt habe ich das ganze etwas verändert:
PHP-Code:
public function saveIni()
{
$text = file_get_contents($this->ini_file);
foreach($this->ini_last as $key=>$value)
{
$text = preg_replace("#$key = (([A-Z]|[a-z]|[0-9]|\"|[#'./-_*]|\\)*\n)#",
"$key = $value\n",
preg_quote($text));
}
file_put_contents($this->ini_file);
}
Code:
preg_replace() [function:preg-replace]: Unknown modifier '''
Weiß jemand, was ich da falsch mache oder wüsste eine bessere Methode, bei der die Kommentare erhalten bleiben?
MfG dying_hero
Kommentar