PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeile löschen



robiotor
21-06-2004, 20:20
ich möchte aus der datei trust-users die zeile wo robiotor steht löschen. die datei enthält in jedr zeile nur ein namen. was mache ich hier falsch ?



// Shared lock auf die Quelldatei

$oldfile = "trusted-users";
$zielzeile = "robiotor";

$old = fopen($oldfile, "r");
flock($old, 1) or die("Kann die Quelldatei $oldfile nicht locken.");

// Exclusive lock auf die Zieldatei
$new = fopen($oldfile.".new", "w");
flock($new, 2) or die("Kann die Zieldatei $newfile nicht locken.");

$lineno = 0;

while($line = fgets($old, 1024)) {
if ($lineno++ == $zielzeile)
continue; // Zeile auslassen

fputs($new, $line);
}

fclose($old); // Gibt das Lock automatisch auf

// Alte Datei wegwerfen.
unlink($oldfile);

// Neue Datei umbenennen.
// (In Windows müssen das rename() und das fclose($new)
// vertauscht werden, da es nicht möglich ist, in Windows
// eine offene Datei umzubenennen.
rename($oldfile.".new", $oldfile);

// Neue Datei schließen und dabei Lock aufgeben.
fclose($new);

mehlvogel
21-06-2004, 20:34
Dein if ist Falsch, dort Vergleichst du die Zeilennummer mit Zeileninhalt also:



if (trim($line) == $zielzeile) continue;

robiotor
21-06-2004, 20:40
dankeschön es funktioniert