ďťż

[php] Usuniecie ostatniej linii z pliku

       

Podstrony


telcocafe

Witam,
Jak za pomoca skryptu php usunac ostatnia linie danego pliku?



Było z 1.0000E razy, szukaj.

Szukałem i nic... nie znalazlem zadnego topicu na ten temat, ani nawet posta... pls pomozcie...

Możesz np. wczytywać plik po lini i dodawać do jednej zmiennej sprawdzając czy nie ma końca pliku. Jak jest to wtedy darujesz sobie dodanie ostatniej linii. Następnie czyścisz plik i zapisujesz całą zmienną którą stworzyłeś.



Jeden ze sposobów: ładujesz plik do tablicy za pomocą file i zapisujesz go bez ostatniej linijki;
$zawartosc = file('plik.txt'); $f = fopen('plik.txt', 'w'); flock($f, LOCK_EX); for ($i=0; $i<count($zawartosc)-1; $i++)  fwrite($f, $zawartosc[$i]); flock($f, LOCK_UN); fclose($f);
Problem może być to, że cały plik ładujesz do pamięci... jeżeli jest mały to ok, ale dla dużych plików nie jest to polecane

Drugi sposób: możesz w jakiś sposób ustawić wskaźnk w pliku na ospowiednim miejscu i użyć ftruncate() do skrócenia pliku. Problemem może być znalezienie tego odpowiendniego miejsca... można w pętli odczytywać znak [ fgetc() ] i cofac się [ fseek() ], ale znowu możesz wykonać wykonujesz strasznie duzo przeskoków w pliku, a nie wiem, czy to nie odbije się na wydajności... możesz wreszcie w pętli odczytywać nie jeen znak, ale np. 100 znaków, szukać ostatniego \n w środku i przesuwać wskaźnik pliku...
to chyba najsensowniejsze
Użytkownik rzarajczyk1984 edytował ten post 06 listopad 2005, 16:40
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.