Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kasowanie ostatniej linijki z pliku
gsmphone
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


Witam,

Od pewnego już czasu szukam w manualu php(niestety nie skutecznie) komendy która kasuje ostatnią linijkę w pliku txt który jest na serwerze. Jeżeli ktoś wie to bardzo proszę o pomoc.

Dzięki
Go to the top of the page
+Quote Post
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2.  
  3. $plik = 'cos.txt'; // nazwa pliku z ktorego ma byc usunieta ostatnia linijka
  4. $a = file($plik);
  5. $tresc = implode(PHP_EOL, $a);
  6. file_put_contents($plik, $tresc);
  7.  
  8. ?>
Powód edycji: Dodałem bbcode i uznaję to za przeoczenie. /webdicepl
Go to the top of the page
+Quote Post
gsmphone
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


Wyskakuje mi coś takiego:

Fatal error: Call to undefined function: file_put_contents()
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


a to bardzo dziwne, file_put_contents jest wbudowaną funkcją php, ale skoro nie dziala to sprobuj tak:

  1. <?php
  2.  
  3. $plik = 'cos.txt'; // nazwa pliku z ktorego ma byc usunieta ostatnia linijka
  4. $a = file($plik);
  5. $tresc = implode(PHP_EOL, $a);
  6. $uchwyt = fopen($plik, 'wb');
  7. fwrite($uchwyt, $tresc);
  8. fclose($uchwyt);
  9.  
  10. ?>
Go to the top of the page
+Quote Post
gsmphone
post
Post #5





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


No to już działa tylko do pliku txt dopisuje mi znaczki(takie kwadratowe).
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


tzn dokladnie gdzie ci te kwadraciki dodaje?
Go to the top of the page
+Quote Post
gsmphone
post
Post #7





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


No tam gdzie ma być przejście do następnej linijki(tzn ENTER)
Go to the top of the page
+Quote Post
pyro
post
Post #8





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


pewnie otwierasz edytorem dziadowym, ja mam tak w notatniku czasem, ale w innych edytorach jest ok, dla testu mozesz se wrzucic taki skrypcik:

  1. <?php
  2.  
  3. $plik = 'aaaa.txt';
  4. $a = file_get_contents($plik);
  5. echo nl2br($a);
  6.  
  7. ?>


a jak ci file_get_contents nie bedzie dzialalo tak samo jak file_put_contents to uzyj funkcji z serii fopen fread fclose
Go to the top of the page
+Quote Post
Maxik
post
Post #9





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Cytat
a to bardzo dziwne, file_put_contents jest wbudowaną funkcją php



Darmowe serwery mają często poblokowane wysokopoziomowe funkcje, wiem, że na yoyo jest wyłączona.
Go to the top of the page
+Quote Post
gsmphone
post
Post #10





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


Cytat(pyro @ 22.08.2008, 21:00:49 ) *
pewnie otwierasz edytorem dziadowym, ja mam tak w notatniku czasem, ale w innych edytorach jest ok, dla testu mozesz se wrzucic taki skrypcik:

  1. <?php
  2.  
  3. $plik = 'aaaa.txt';
  4. $a = file_get_contents($plik);
  5. echo nl2br($a);
  6.  
  7. ?>


a jak ci file_get_contents nie bedzie dzialalo tak samo jak file_put_contents to uzyj funkcji z serii fopen fread fclose



No ten skrypt pokazuje co w pliku txt sie znajduje. I jest tak że przed usuwaniem ostatniej linijki mam w txt takie cos:

Linijka 1
Linijka 2
Linijka 3
Linijka 4
Linijka 5
Linijka 6

A już po usuwaniu ostatniej linijki:
Linijka 1

Linijka 2

Linijka 3

Linijka 4

Linijka 5


Czyli usuwa ostatnią ale robi tak jakby 2x enter. I własnie gdy się otworzy ten txt w notatniku po usunięciu ostatniej linijki pokazują się te kwadraciki, coś w stylu:
Linijka 1□□□
Linijka 2□□□
Linijka 3□□□
Linijka 4□□□
Linijka 5
Dodam też że serwer mój nie jest darmowy.
Go to the top of the page
+Quote Post
webdice
post
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2.  
  3. $fileContent = file ('file.txt');
  4.  
  5. array_pop ($fileContent);
  6.  
  7. $fp = fopen ('file.txt', 'w');
  8.  
  9. fwrite ($fp, implode ("", $fileContent)); 
  10. fclose ($fp);
  11.  
  12. ?>


Pisane z palca, nie sprawdzałem.

EDIT: ~pyro, przepraszam nie czytałem wszystkich postów, a mój kod wygląda jak plagiat (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
gsmphone
post
Post #12





Grupa: Zarejestrowani
Postów: 150
Pomógł: 0
Dołączył: 20.10.2006

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


Cytat(webdicepl @ 22.08.2008, 23:19:08 ) *
  1. <?php
  2.  
  3. $fileContent = file ('file.txt');
  4.  
  5. array_pop ($fileContent);
  6.  
  7. $fp = fopen ('file.txt', 'w');
  8.  
  9. fwrite ($fp, implode ("", $fileContent)); 
  10. fclose ($fp);
  11.  
  12. ?>


Pisane z palca, nie sprawdzałem.



To mi kasuje wszystko z pliku.

Ale dzieki wszystkim za pomoc. Te kwadraciki poprostu sobie usunę tym:

  1. <?php
  2. $correct=array('□'=>'');
  3. $txt_correct = strtr($tresc, $correct);
  4. ?>


Ten post edytował gsmphone 23.08.2008, 07:52:55
Go to the top of the page
+Quote Post
golaod
post
Post #13





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


To jest akurat niemożliwe.
Jedyne co to możesz zmienić na;
  1. <?php
  2. fwrite($fp,implode("r\n",$fileContent));
  3. //Lub jak nie chcesz korzystać z implode to:
  4. foreach($fileContent as $val)
  5.  fwrite($fp,$val."r\n");
  6. ?>
Go to the top of the page
+Quote Post
elemek
post
Post #14





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


osobiscie jestem za tym rozwiazaniem:
jedyny feler to, ze elementy tablicy zawieraja juz znaki konca lini (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) dlatego PHP_EOL powoduje powstanie pustych linii, trzeba to zastapic ''.

Cytat(pyro @ 22.08.2008, 18:37:23 ) *
  1. <?php
  2. $plik = 'cos.txt'; // nazwa pliku z ktorego ma byc usunieta ostatnia linijka
  3. $a = file($plik);
  4. $tresc = implode('', $a); // TU MOJA ZMIANA
  5. file_put_contents($plik, $tresc);
  6.  
  7. ?>


EDIT: @pyro: czytalem i autor tematu napisal ze kod kasuje mu wszystko z pliku, a moj (tzn twoj po poprawce) kod dziala dobrze - sprawdzalem.

Ten post edytował elemek 23.08.2008, 09:38:58
Go to the top of the page
+Quote Post
pyro
post
Post #15





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


elemek, radze przeczytac wyzsze posty, w tym webdicepl

@webdicepl, spoko

@elemek, chodzilo mi o to ze zrobiles to samo co @webdicepl

Ten post edytował pyro 23.08.2008, 11:48:37
Go to the top of the page
+Quote Post
golaod
post
Post #16





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Jak dalej nie działa to polecam jeszcze trim (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
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: 23.08.2025 - 06:19