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