Hallo, ich hatte dies zwar schon mal hier
irgend wo eingestellt, aber find es auf
die schnelle nicht im Forum, daher noch
mal.
Unter $nr bezeichnest Du die Zeile, die
geschrieben werden soll. Zählen wie der
Computer, also mit null beginnend.
$arrDatei bezeichnet die Originaldatei
$arrDateiSav ist die Sicherungskopie#
wird nach jedem Runn aktuallisiert.
$arrDateiNeu ist die Temp. schreibdatei
Es funkt so: Die Datei wird Zeilenweise
ausgelesen und umgeschrieben. An der Stelle,
wo die Zeile sich ändert, bei $nr, wird die
neue Zeile, Inhaltsvariable $neu eingefügt.
Du musst jetzt nur noch das Trennzeichen #
durch Dein Trennzeichen zwischen den einzelnen
Zeileninhalten ersetzen.
Am Anfang und am Ende ist jeweils eine Kontrollausgabe
der Datei eingebaut, damit man gleich sieht, ob es funkt.
Frage noch, wie bekommt ihr euern Code so schon farbig hin
// bezeichnet die zu ändernde Zeile
// wenn hier > Gesamtzeilen,
// dann wird keine neue Veränderung vorgenommen
$nr = 3;
// Originaldatei
$arrDatei="daten.txt";
// Save der Originaldatei vor Überschreiben
$arrDateiSav="datenSav.txt";
// Datei zur Zwischenlagerung
$arrDateiNeu="datenNeu.txt";
// Eingeben der zu ändernden Daten
//Kann man durch Textfelder ändern
$neu1 = "Seas";
$neu2 = "Leute";
$neu3 = "100";
$neu = "$neu1#$neu2#$neu3#\n";
// überprüfen ob Datei existiert
if (file_exists($arrDatei))
{
// Auslesen der Daten aus externer Datei: eindim. Array
$auslesen=file($arrDatei);
// Umwandeln der Daten in mehrdim. Array
for ($i=0;$i<sizeof($auslesen);$i++)
{
$artNummer[$i]= explode("#",$auslesen[$i]);
} // Ende for Schleife
} // Ende if Schleife
// kontrollAusgabe des Array aus Originaldatei
for ($i=0;$i<sizeof($artNummer);$i++)
{
echo "Array Nr: [".$i."]==> Array: ";
while (list ($index,$inhalt)= each ($artNummer[$i]))
{
echo "[".$index."]=>".$inhalt." ";
}
echo "<br>";
} // Ende for
// Öffnen der Betreffenden Dateien
// zum Auslesen der benötigten Daten
$fp=fopen($arrDatei,"r");
// zum Schreiben der geänderten Daten
$fp2=fopen($arrDateiNeu,"w+");
$nl = chr(13) . chr(10);
// durchsuchen der Datei, bis Ende erreicht
while (! feof($fp) )
{
// Zeilenweises auslesen der Zeilen
$zeile = fgets($fp,4096);
// $nr Zeile erreicht Inhalt wird mit
// $neu geändert
if ($z==$nr)
{
fputs($fp2,$neu);
echo "<p>Das Array Nr: <b>".$nr."</b> wird ersetzt durch: <b>".$neu."</b><p>";
} // Ende if
// Andere Zeilen werden unverändert zurückgeschrieben
else
{
fputs($fp2,$zeile);
} // ende else
// ZeilenZähler wird inkrementiert
$z++;
} // Ende while
// Originaldatei schliessen
fclose($fp);
// Neue Datei schliessen
fclose($fp2);
// Sav Datei wird gelöscht
unlink ($arrDateiSav);
// Originaldatei wird umbenannt
rename ($arrDatei,$arrDateiSav);
// Neue Datei erhält Namen von Originaldatei
copy ($arrDateiNeu,$arrDatei);
// Kontroll-Ausgabe der geänderten Daten aus datenNeu.txt
// überprüfen ob Datei existiert
if (file_exists($arrDateiNeu))
{
// Auslesen der Daten aus externer Datei: eindim. Array
$auslesenNeu=file($arrDateiNeu);
// Umwandeln der Daten in mehrdim. Array
for ($i=0;$i<sizeof($auslesenNeu);$i++)
{
$artNummerNeu[$i]= explode("#",$auslesenNeu[$i]);
} // Ende for Schleife
} // Ende if Schleife
// Ausgabe des Array aus Neu
for ($i=0;$i<sizeof($artNummerNeu);$i++)
{
echo "Array Nr: [".$i."]==> Array: ";
while (list ($index,$inhalt)= each ($artNummerNeu[$i]))
{
echo "[".$index."]=>".$inhalt." ";
}
echo "<br>";
}
_____________________________________________________________________
ende Schnipsel