Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] usuwanie ostatniej linijki w pliku
markuz
post
Post #1





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Jak usunąć ostatnią linijkę w pliku?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




może jakiś kod. jaki to plik albo chociaż fusy żeby można było wywróżyć.
Go to the top of the page
+Quote Post
l0ud
post
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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.
Go to the top of the page
+Quote Post
Darti
post
Post #5





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:15