2017-04-09 3 views
2

Ich habe ein PHP-Skript, wo ich alle Zeilen in einer Textdatei durchlaufen bin. Wie kann die Zeile zu löschen, nachdem es gelesen wurde, so durch das Ende des Skripts alle Zeilen, die Ausgabe wurden aus der Datei ...PHP Schleife über TXT-Datei Zeile nach Ausgabe löschen

$file = $dataDoc['file']; 
if(is_file($file)){ 
    $contents = file($file); 
    foreach($contents as $line) { 
     echo $line . "\n"; 
     // Delete line here and keep looping over the rest of the lines... 
    } 
} 
+0

Sie meinen - löschen Zeile aus einer Datei? –

+0

Ja, das ist was ich meine – LargeTuna

Antwort

-1

können einfache Lösung sein:

$contents = file($file); 
foreach($contents as &$line) { // add `&` to modify source line 
    echo $line . "\n"; 

    if (/*Some case is true*/) { 
     $line = null;   // unset a line if needed 
    } 
} 

// lines that are NULL will not be written to a file 
$writeRes = file_put_contents($file, $contents); 
+0

Das funktioniert super, danke! – LargeTuna

+0

Die Frage ist, für was ist das Overhead gut? Auf diese Weise können Sie am Ende nur eine leere Datei speichern. Wenn das Löschen nach dem Lesen dazu gedacht ist, eine Art von Backup im Falle eines Fehlers zu erzeugen, um eine doppelte Berechnung zu verhindern, hilft das überhaupt nicht – Sebastian

1
$file = $dataDoc['file']; 
if(is_file($file)){ 
    $contents = file($file); 
    foreach($contents as $i => $line) { 
     echo $line . "\n"; 
     unset($contents[$i]); 
     fopen($file, 'w'); 
     fwrite(implode('\n', $contents)); 
     fclose($file); 
    } 
} 

gelöscht werden Jede Zeile, die Sie gerade lesen in der Datei, die Sie aus dem Array $ contents entfernen, und dann die Datei ohne diese Zeile neu schreiben. Dies ist nicht sehr effizient, aber nur eine Möglichkeit, dies zu tun.

Verwandte Themen