PHP – Zeile(n) in Textdatei editieren
Dieser Artikel beschreibt das editieren und löschen von Zeilen in einer Text Dateien.
Beispieldatei und PHP Code dazu
In diesem Beispiel soll die Zeile mit der Nr. 4
CODE:
4|Lehmann|Hubert|2002.11.01|Oesterreich|M
mit neuen Daten in die Datei geschrieben werden
Die Datei die bearbeitet werden soll:
CODE:
1|Walter|Helmut|2004.02.02|Deutschland|M 2|Meyer|Lisa|2003.12.28|Deutschland|W 3|Müller|Maximilian|2002.05.22|Schweiz|M 4|Lehmann|Hubert|2002.11.01|Oesterreich|M 5|Schulze|Stefanie|2004.01.04|Deutschland|W 6|Wolter|Willy|2002.06.09|Oesterreich|M 7|Thomas|Eva-Maria|2004.01.17|Schweiz|W 8|Schneyder|Jean|2001.09.04|Frankreich|M 9|Clerc|Pascale|2002.11.17|Frankreich|M 10|Benguerel|Sebastian|2003.08.10|Spanien|M 11|Carl|Johanna|2002.10.01|Deutschland|W
Der Code dazu:
CODE:
<?php // ID was weg soll, kann z.B. Wert aus Formular sein $edituser_id = 4; // Datei lesen $inhalte = file("namensliste.dat"); $gefunden = 0; // Nochmal öffnen für foreach $fp = fopen("namensliste.dat", 'w+'); flock($fp, 2) or die('Kann die Datei nicht locken'); foreach ($inhalte as $value) { $zeile = explode("|",$value); chop($zeile); if ($zeile[0] == $edituser_id) { $gefunden = 1; // Wert wurde gefunden // Daten die geändert werden sollen zusammensetzen $neuedaten = "$zeile[0]|Lehmann|Heribert|$zeile[3]|Neuseeland|Mn"; fwrite($fp, "$neuedaten"); // Die anderen Daten wieder in Datei schreiben } else { fwrite($fp, "$value"); } } fclose($fp); if ($gefunden) { echo "Daten Der ID $edituser_id: $neuedaten wurden aktualisiert"; } else { echo "Keine Daten zum ändern für ID $edituser_id gefunden!"; } ?>
PHP-Script um Zeile aus Datei zu löschen
Beispielhafter Aufbau der Datei:
CODE:
1|Meier|Hans 2|Muster|Max 3|Mustermann|Maximilian ... weitere
Der Code zum löschen einer Zeile
CODE:
<?php // zu löschende Zeilenid $deluser_id = 2; $inhalte = file("user.dat"); $fp = fopen("user.dat", 'w+'); flock($fp, 2) or die('Kann die Datei nicht locken'); foreach ($inhalte as $value) { $zeile = explode("|",$value); chop($zeile); if ($zeile[0] != $deluser_id) { fwrite($fp, "$value"); } } fclose($fp); ?>
Keine Kommentare vorhanden