2013-06-29 3 views
7

Ich habe viele mögliche Lösungen ausprobiert, aber keine von ihnen funktioniert für mich. Die einfachste:Wie kann ich die letzte Zeile einer Datei mit PHP entfernen?

$file = file('list.html'); 
array_pop($file); 

tut gar nichts. Mache ich hier etwas falsch? Ist es anders, weil es eine HTML-Datei ist?

+0

Bitte geben Sie weitere Informationen –

+0

Sie müssten $ file zurück zu list.html schreiben, um die auf der Festplatte gespeicherte Datei tatsächlich zu ändern –

+0

Wollen Sie die letzte Zeile entfernen und sie auf der Festplatte speichern? – angelsl

Antwort

9

Dieser sollte Arbeiten schreiben:

<?php 

// load the data and delete the line from the array 
$lines = file('filename.txt'); 
$last = sizeof($lines) - 1 ; 
unset($lines[$last]); 

// write the new data to the file 
$fp = fopen('filename.txt', 'w'); 
fwrite($fp, implode('', $lines)); 
fclose($fp); 

?> 
+0

Ich las das auf einer anderen Seite, aber als ich es versuchte, kopierte es das Originaldokument und alles erschien zweimal. Macht das irgendeinen Sinn? – jemtan990

+0

Oh mein Gott, ich habe herausgefunden, was ich falsch gemacht habe und es war wirklich dumm. Ich habe versucht, das Array in die Datei zu schreiben und die neue Information gleichzeitig anzuhängen. Ich musste fopen ('list.html', 'w +'); dann schließe, dann öffne es wieder mit 'a'. Danke für die Hilfe! Diese Lösung funktioniert. – jemtan990

+0

Wie entfernen wir die erste und letzte Zeile aus der CSV @angezanetti? –

-2

Sie die Datei nur lesen, müssen Sie jetzt die Datei

Blick in file_put_contents etc

+0

Es tut mir leid, ich hätte mehr Details verwenden sollen. Ich stelle diese Frage auf einem anderen Computer als dem, auf dem ich den Code schreibe, also habe ich nicht alles eingeschlossen. Ich habe in die Datei geschrieben, aber es macht einfach nichts. – jemtan990

0

entfernen erste und die letzte Zeile einer Variablen in PHP:

Verwenden von PHPsh interaktive Shell:

php> $test = "line one\nline two\nline three\nline four"; 

php> $test = substr($test, (strpos($test, "\n")+1)); 

php> $test = substr($test, 0, strrpos($test, "\n")); 

php> print $test; 
line two 
line three 

Sie haben „Die letzte nicht leere Zeile“ gemeint könnte. In diesem Fall tun Sie dies:

Beachten Sie, dass nach dem Inhalt drei leere Zeilen sind. Dadurch werden diese Zeilen gelöscht, bevor die letzte Zeile entfernt wird:

0

Ich habe eine Funktion erstellt, um x Anzahl der Zeilen von der Unterseite zu entfernen. Setzen Sie $max auf die Anzahl der Zeilen, die Sie löschen möchten.

function trim_lines($path, $max) { 
    // Read the lines into an array 
    $lines = file($path); 
    // Setup counter for loop 
    $counter = 0; 
    while($counter < $max) { 
    // array_pop removes the last element from an array 
    array_pop($lines); 
    // Increment the counter 
    $counter++; 
    } // End loop 
    // Write the trimmed lines to the file 
    file_put_contents($path, implode('', $lines)); 
} 

Rufen Sie die Funktion wie folgt aus:

trim_lines("filename.txt", 1); 

Die Variable $path kann ein Pfad zur Datei oder einen Dateinamen sein.

Verwandte Themen