Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] usuwanie ostatniej linijki w pliku
Forum PHP.pl > Forum > PHP
markuz
Jak usunąć ostatnią linijkę w pliku?
piotrooo89
może jakiś kod. jaki to plik albo chociaż fusy żeby można było wywróżyć.
l0ud
Pewnie da się zrobić to prościej ale...

  1. <?php
  2.  
  3. $arr = file('asd.txt');
  4.  
  5. unset($arr[count($arr)-1]);
  6. $arr[count($arr)-1] = substr($arr[count($arr)-1],0,strlen($arr[count($arr)-1])-2);
  7.  
  8. file_put_contents('asd.txt',implode(null,$arr));
  9.  
  10. ?>


Kod zadziała, o ile znaki końca linii są w stylu windowsa (\r\n a nie \n). Jeżeli są w stylu unixa, zamień w kodzie wyżej -2 na -1 smile.gif

Funkcja file() czyta plik i rozbija go na tablicę - każda linia jest oddzielnym jej elementem. Funkcja unset w kodzie wyżej usuwa ostatni element tablicy. To dziwne wykorzystanie substr i strlen usuwa ostatni znak z przedostatniej linii - znak nowej linii. Dzięki temu w pliku nie pozostanie na końcu pusta linia. file_put_contents zapisuje zmieniony plik, złożony z tablicy przez funkcję implode.

http://pl2.php.net/manual/pl/function.file.php
http://pl2.php.net/manual/pl/function.unset.php
http://pl2.php.net/manual/pl/function.substr.php
http://pl2.php.net/manual/pl/function.strpos.php
http://pl2.php.net/manual/pl/function.implode.php
http://pl2.php.net/manual/pl/function.file-put-contents.php

Z chęcią dowiem się, jak zrobić to prościej smile.gif
nospor
@piotroo a po co ci kod?
Pytanie jest dosc jasne: jak usunać ostatnią linijke pliku. Tu kod autora do niczego ci nie jest potrzebny.

@markuz
wczytujesz plik np. poprzez file() do tablicy. Usuwasz ostatni element tablicy (unset()), zapisujesz tablice sprowrotem do pliku

Inny sposob: czytasz plik linijka po linijce (fgets()) i zapisujesz od razu do innego pliku. Ostatniej linijki nie zapisujesz.

Innych bezposrednich metod nie ma.
Darti
  1. <?php
  2. $plik = 'aaaa.txt';
  3. $zawartosc = file($plik);
  4. array_pop($zawartosc);
  5. $zawartosc = implode("r\n",$zawartosc);
  6. $u = fopen($plik,'w');
  7. fwrite($u,$zawartosc);
  8. ?>


mam nadzieje ze zadziala
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.