datei einlesen und teile ersetzen mit php
BiG_WEaSeL 05.05.2002 - 18:12 752 11
BiG_WEaSeL
Elder-
|
hallo!
mein problem ist folgendes, ich hab eine datei (ascii), moechte diese datei komplett einlesen in eine variable, dann nach eine bestimmten zeichenkette suchen und diese ersetzen durch eine andere variable.
was ich nicht hinbekomm ist die datei in eine variable zu speichern (in einen array schaff ich's, aber irgendwie bring ich's nicht zsamm den array zu durchsuchen und die zeichenkette zu ersetzen.
wenn wer verstanden hat was ich mein waere es nett wenn ich ein paar tipps oder code schnipsel bekommen wuerde.
|
Sushimaster
Little Overclocker
|
Wenn der Begriff immer nur in einer Zeile vorkommt (also ned über einen Zeilenumbruch geht): würd einfach ne for schleife machen, von i=0 bis i=(anzahl der elemente im array-1)=(zeilen in datei). Und dann in den einzelnen arrayelementen ersetzten. Wenns auch über Zeilenumbrüche gehen soll, dann vielleicht in einer for schleife zuerst das ganze array auf einen einzigen string hängen und dann in dem austauschen.
welche funktion du jetzt genau zum austauschen nimmst, hängt davon ab wie mächtig ihre suchfunktion sein soll. zb für reguläre ausdrücke: ereg_replace()
|
jives
And the science gets done
|
Willst dus ersetzt ausgeben, oder in der Datei ersetzen?
|
Vir@s
Code Monkey
|
|
BiG_WEaSeL
Elder-
|
danke mal fuer die tipps, hab vergessen dazu zu schreiben das ich eh weiss wie die funktionen heissen, aber es halt nicht zamkrieg, naja werds morgen oder uebermorgen mal probieren was ihr so gepostet habts.
btw.: das zu ersetzende geht nicht ueber mehrere zeilen.
|
Vir@s
Code Monkey
|
danke mal fuer die tipps, hab vergessen dazu zu schreiben das ich eh weiss wie die funktionen heissen, aber es halt nicht zamkrieg, naja werds morgen oder uebermorgen mal probieren was ihr so gepostet habts.
btw.: das zu ersetzende geht nicht ueber mehrere zeilen. Deshalb solltest du auch die file() funktion verwenden - denn die liefert jede Zeile extra zurück. Also z.B.: <?
$file_content = file("test.txt");
echo "Original file: ";
echo join("<BR>",$file_content);
echo "<P>";
$i = 0;
foreach ($file_content as $line) {
$file_content[$i] = str_replace("a","A",$line);
$i++;
}
echo "Modified file: ";
echo join("<BR>",$file_content);
?>
Der code ersetzt alle "a" durch ein "A" in einer eingelesenen file! Die foreach konstruktion is dafür da, weil du bei foreach selber nur eine Kopie von dem Array bearbeitest - deshalb der index $i! Mfg, Vir@s
|
BiG_WEaSeL
Elder-
|
ma bin ich dumm, danke vir@s, so muessts auch bei mir funktionieren (hab jetzt leider keine zeit zum testen), ich hab einfach vergessen eine schleifenvariable zu verwenden, aber wie gesagt, die arrays in php sind fuer mich noch ein bisschen ein spanisches dorf (aber mit uebung wird das schon werden).
|
Vir@s
Code Monkey
|
Aber klar ![:)](/images/smilies/smile.gif) Wirst sehen - ein paar Scripts selber schreiben und schon geht alles leichter
|
jives
And the science gets done
|
Das Script ändert aber nichts an der Datei, oder? Da wird nur der Text verändert ausgegeben...
|
BiG_WEaSeL
Elder-
|
ja, die datei wird NICHT veraendert, nur die ausgabe.
@vir@s: danke, das script funktioniert.
|
Vir@s
Code Monkey
|
Das Script ändert aber nichts an der Datei, oder? Da wird nur der Text verändert ausgegeben... Jep klar - wird ja nur eingelesen und die Variable dann modifiziert!
|
jives
And the science gets done
|
Ok, sorry ![:)](/images/smilies/smile.gif) Ich dachte du willst die Datei ändern
|