Config Datei bearbeiten

moodsx

Grünschnabel
Hallo Community,

ich habe folgendes Problem:

Ich möchte einfache TXT Dateien bearbeiten, die wie folgt aussehen:

Code:
[blablabla]
var=wert
var2=wert2
var3 = __wert-3

[blublublu]
var=wert
var=wert2
var3 = __wert2

Ich möchte jetzt im Bereich "blublublu" komplett die Werte ändern und dann alles gesamt wieder in dem File abspeichern.
Ich habe es mit
PHP:
parse_ini_file
probiert, allerdings klappt es damit net ganz da doch die "__" oder "." oder was sonst auch immer stört. Und die Werte in "" im File verpacken geht auch net.

Hat jemand einen Vorschlag wie ich das ganze sonst noch sauber lösen kann?

Danke für Eure Hilfe
 
Ich hab vor langer Zeit mal eine kleine Funktionssammlung geschrieben, mit der ich meine Ini-Files bearbeitet habe. Es entspricht vermutlich nicht mehr dem State-of-the-Art und vermutlich würde ich alles anders machen, müsste ich es neu schreiben. Aber vielleicht kannst du ja was extrahieren und nützliche Informationen daraus gewinnen :)

Gruss Igäl

PHP:
<?
############################################################################
# Funktionen								#
############################################################################
# readIni()		-	Liest das ganze Ini-File aus und speichert #
#				es in einem assoziativen Array             #
# checkIniValue()	-	Prüft ob einem Setting bereits ein Wert    #
#				zugewiesen wurde und gibt bei Erfolg	   #
#				den Settingwert zurück			   #
# writeError()		-	Schreibt einen eventuellen Fehler	   #
#				in das File 'error_log.txt'		   #
# writeIni()		-	Schreibt das Ini-File neu, indem es das	   #
#				modifizierte Array ins File schreibt	   #
# modifyParam()		-	Diese Funktion wird gebraucht, wenn nur	   #
#				ein bestimmter Parameter modifiziert	   #
#				werden soll				   #
############################################################################
function readIni($show_sections = FALSE, $ini_path = "")	{
	$ini = parse_ini_file($ini_path, $show_sections);
	return($ini);
}

function getSettingVal($setting_name)	{
	$err_msg = "";
	$return_msg = FALSE;
	$ini = readIni();
	if(empty($ini[$setting_name]))	{
		$val_chk = array_key_exists($setting_name, $ini);
		if($val_chk == FALSE)	{
			$err_msg = "Fktn. getSettingVal: Das Element \"".$setting_name."\" existiert nicht!";
			writeError($err_msg);
		}
	}else{
		$return_msg = $ini[$setting_name];
	}
	return($return_msg);
}

function writeError($err_msg)	{
	trim($err_msg);
	$date = date("D, d M. Y, H:i:s");
	$fh = fopen(DIR_LOGS."error_log.txt", 'a');
	fprintf($fh, "%s | %s\n", $date, $err_msg);
	fclose($fh);
}

function writeIni($assoc_array, $path = cfg_name) {
	$hlp_cnt=0;
	$content="";
	foreach ($assoc_array as $key => $item) {
		if (is_array($item)) {
			$content .= ($hlp_cnt!=0?"\n":"");
			$content .= "[$key]\n";
			foreach ($item as $key2 => $item2) {
				$content .= "$key2 = \"$item2\"\n";
			}       
		} else {
			$content .= "$key = \"$item\"\n";
		}
		$hlp_cnt++;
	}         
	if (!$handle = fopen($path, 'w')) {
		return false;
	}
	if (!fwrite($handle, $content)) {
		return false;
	}
	fclose($handle);
	return true;
}

function modifyParam($section, $param, $value)	{
	$ini = readIni(TRUE);
	$ini[$section][$param] = $value;
	writeIni($ini);
}

?>
 
Zuletzt bearbeitet:
Zurück