Hallo Liebe Gemeinde!
Ich habe ein kleines Problem bei dem beschreiben einer INI Datei in PHP4.
Und zwar hab ich folgendes Problem:
Erstmal hier der Code inklusive Funktionen:
Nun zu dem Problem. Wenn ich die Ini Datei im Urzustand anschaue hat sie auch einzelne Felder die nach dem = keinen Wert haben und leer sind. Diese füllen sich erst im laufe der Zeit (Saison) mit Berichten usw. Das Problem ist aber das sie bei dem erstellen des ganzen immer gleich in der INI mit drin sind.
INI im Originalzustand: [COLOR="Red"](z.B hier die Felder NT1, BE1 und TI1)[/COLOR]
[Round2]
D1=01.01.2009
D2=01.01.2010
TA1=16
TB1=13
GA1=2
GB1=3
NT1=
BE1=
TI1=
AT1=1231527600
TA2=14
TB2=11
GA2=1
GB2=3
NT2=
BE2=
TI2=
AT2=1231855200
Nun die Ini nach dem ersten Speichern durch das Script. (Die angaben werden korrekt gespeichert aber die Felder die leer sind werden durch das darunterliegende Feld gefüllt und das sieht dann so aus.
[Round2]
D1=01.01.2009
D2=01.01.2010
TA1=16
TB1=13
GA1=2
GB1=3
NT1=BE1=
TI1=AT1=1231527600
TA2=14
TB2=11
GA2=1
GB2=3
NT2=BE2=
TI2=AT2=1231855200
Nun wollt ich mal fragen ob hier vieleicht jemand von Euch ne Lösung zur Hand hat wie ich dies verhindern kann. Ich probiere schon seit gestern daran rum und verzweifle bald.
Nach mehrmaligem speichern zerstört mir das natürlich die ganze INI Datei und macht sie unbrauchbar.
Wäre von daher für abhilfe sehr dankbar.
LG
Kallewaze
Ich habe ein kleines Problem bei dem beschreiben einer INI Datei in PHP4.
Und zwar hab ich folgendes Problem:
Erstmal hier der Code inklusive Funktionen:
PHP-Code:
function parseIniFile($iIniFile)
{
$aResult =
$aMatches = array();
$a = &$aResult;
$s = '\s*([[:alnum:]_\- \*]+?)\s*'; preg_match_all('#^\s*((\['.$s.'\])|(("?)'.$s.'\\5\s*=\s*("?)(.*?)\\7))\s*(;[^\n]*?)?$#ms', @file_get_contents($iIniFile), $aMatches, PREG_SET_ORDER);
foreach ($aMatches as $aMatch)
{
if (empty($aMatch[2]))
$a [$aMatch[6]] = $aMatch[8];
else $a = &$aResult [$aMatch[3]];
}
return $aResult;
}
function array_to_ini($array){
foreach($array as $key => $value){
if(is_array($value)){
$output .= "[$key]\n";
foreach($value as $key2 => $value2){
$output .= "$key2=$value2\n";
}
} else {
$output .= "$key=$value\n";
}
}
return $output;
}
function file_put_contents($filename, $data) {
if ( is_array($data) ) {
$data = implode('', $data);
}
$handle = fopen ($filename, 'w');
// Datei zum schreiben oeffnen und Inhalt loeschen
$return = fwrite($handle, $data, strlen($data));
// Inhalt in die Datei schreiben
fclose($handle);
// Datei schliessen
return $return;
}
$ini_array = parseIniFile("lmo/ligen/1-liga-5-saison.l98",true);
$ini_array[$lmo_id]['NOT'] = $trainer_name;
$ini_array[$lmo_id]['URL'] = $icq;
$ini_array[$lmo_id]['URL2'] = $trainer_id;
$ini_array[$lmo_id]['URL3'] = $trainer_id;
$neue_ini = array_to_ini($ini_array);
file_put_contents("lmo/ligen/1-liga-5-saison.l98", $neue_ini);
INI im Originalzustand: [COLOR="Red"](z.B hier die Felder NT1, BE1 und TI1)[/COLOR]
[Round2]
D1=01.01.2009
D2=01.01.2010
TA1=16
TB1=13
GA1=2
GB1=3
NT1=
BE1=
TI1=
AT1=1231527600
TA2=14
TB2=11
GA2=1
GB2=3
NT2=
BE2=
TI2=
AT2=1231855200
Nun die Ini nach dem ersten Speichern durch das Script. (Die angaben werden korrekt gespeichert aber die Felder die leer sind werden durch das darunterliegende Feld gefüllt und das sieht dann so aus.
[Round2]
D1=01.01.2009
D2=01.01.2010
TA1=16
TB1=13
GA1=2
GB1=3
NT1=BE1=
TI1=AT1=1231527600
TA2=14
TB2=11
GA2=1
GB2=3
NT2=BE2=
TI2=AT2=1231855200
Nun wollt ich mal fragen ob hier vieleicht jemand von Euch ne Lösung zur Hand hat wie ich dies verhindern kann. Ich probiere schon seit gestern daran rum und verzweifle bald.
Nach mehrmaligem speichern zerstört mir das natürlich die ganze INI Datei und macht sie unbrauchbar.
Wäre von daher für abhilfe sehr dankbar.
LG
Kallewaze
Kommentar