Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wczytywanie pliku txt w php
Forum PHP.pl > Forum > PHP
mozart2008
Witam.
Jak mogę wczytać 5 ostatnich linijek z jakiegoś pliku tekst.txt?
wiem jak wczytac całość ale nie mam pojęcia jak zrobić aby wczytało mi 5 linijekt tekstu a to an dodatek ostatnich....
Z góry dzięki
Fifi209
fseek

ew. wrzuć sobie do tablicy za pomocą file, oblicz ilość linii count i pętlą wyświetl ostatnie pięć.
mozart2008
Bardzo dziekuje za odpowiedzi... udało mi to się zrobić:

  1. <?php
  2.  
  3. $fp = file("somefile.txt");
  4. $wiersze = count($fp) -1;
  5.  
  6.  
  7. echo $fp[$wiersze]."<br/>";
  8. echo $fp[$wiersze-1]."<br/>";
  9. echo $fp[$wiersze-2]."<br/>";
  10. echo $fp[$wiersze-3]."<br/>";
  11. echo $fp[$wiersze-4];
  12. ?>



ale jest jeszcze jedna sprawa..

plik somefile.txt wygląda tak:

pierwszy1:tekst
drugi2:plik
trzeci3:costam
czwarty4:mozekn
ostatni5:paula

jak wyświetlić pierwsza połowę przed : żeby była pogrubiona ?
l0ud
Najprościej to chyba użyć explode z pierwszym parametrem ":", a później dać wyświetlanie w stylu:
  1. echo '<strong>'.$tmpWiersz[0].':</strong>'.$tmpWiersz[1];
mozart2008
Wielkie dzięki.
Wszystko działa smile.gif

Kodzik:
  1. <?php
  2.  
  3. $fp = file("somefile.txt");
  4. $wiersze = count($fp) -1;
  5. $pierwszy =$fp[$wiersze] ;
  6. $drugi =$fp[$wiersze-1] ;
  7. $trzeci =$fp[$wiersze-2] ;
  8. $czwarty =$fp[$wiersze-3] ;
  9. $piaty =$fp[$wiersze-4] ;
  10.  
  11.  
  12. $wyswietlanie_pierwszy = explode(":", $pierwszy);
  13.  
  14. $wyswietlanie_drugi = explode(":", $drugi);
  15.  
  16. $wyswietlanie_trzeci = explode(":", $trzeci);
  17.  
  18. $wyswietlanie_czwarty = explode(":", $czwarty);
  19.  
  20. $wyswietlanie_piaty = explode(":", $piaty);
  21.  
  22. echo "<b>" . $wyswietlanie_pierwszy[0] . "</b>:".$wyswietlanie_pierwszy[1]."<br/>" ;
  23. echo "<b>" . $wyswietlanie_drugi[0] . "</b>:".$wyswietlanie_drugi[1] ."<br/>";
  24. echo "<b>" . $wyswietlanie_trzeci[0] . "</b>:".$wyswietlanie_trzeci[1] ."<br/>";
  25. echo "<b>" . $wyswietlanie_czwarty[0] . "</b>:".$wyswietlanie_czwarty[1] ."<br/>";
  26. echo "<b>" . $wyswietlanie_piaty[0] . "</b>:".$wyswietlanie_piaty[1] ;
  27. ?>



A tak poza tym to narazie to forum najwięcej mi pomaga...bo jak gdziesz indziej napisałem że czegos nie rozumiem to odpowiedź była google.com ...
Ale chyba nie jestem głupi... najpierw szukam na google i jak czegos nie rozumiem bądź nie umiem to dopiero pisze; P
Jeszcze raz dzięki smile.gif
kiler129
Mała uwaga - sposób podany przez ciebie jest dobry ALE dla małych plików. Dla większych spowoduje wysypanie się php z powodu braku pamięci.
Dla większych plików użyj czegoś nad czym ja ostatnio się głowiłem: http://forum.php.pl/index.php?showtopic=159639
Konkretnie chodzi o ten kod:

  1. function unix_tail($file, $num_to_get=10)
  2. {
  3. $fp = fopen($file, 'r');
  4. $position = filesize($file);
  5. $chunklen = 4096;
  6. if($position-$chunklen <= 0 )fseek($fp,0);
  7. else fseek($fp, $position-$chunklen);
  8. $data="";$ret="";$lc=0;
  9. while($chunklen > 0)
  10. {
  11. $data = fread($fp, $chunklen);
  12. $dl=strlen($data);
  13. for($i=$dl-1;$i>=0;$i--){
  14. if($data[$i]=="\n"){
  15. if($lc==0 && $ret!="")$lc++;
  16. $lc++;
  17. if($lc>$num_to_get)return $ret;
  18. }
  19. $ret=$data[$i].$ret;
  20. }
  21. if($position-$chunklen <= 0 ){
  22. fseek($fp,0);
  23. $chunklen=$chunklen-abs($position-$chunklen);
  24. }else fseek($fp, $position-$chunklen);
  25. $position = $position - $chunklen;
  26. }
  27. fclose($fp);
  28. return $ret;
  29. }


Jeśli chodzi o odsyłanie do google najczęściej robią to ludzie który siedzą na forum tylko po to aby pokazać jacy to z nich pro koderzy winksmiley.jpg
Pomijam przypadki gdzie pytania są ewidentnie idiotyczne typu jak używać mysql_query();
Fifi209
Drogi Panie kiler129 jakbyś następnym razem uważniej czytał posty, napisałem o fseek.
Sprawa druga, zawsze można użyć wyszukiwarki - jak widać daleko szukać nie trzeba.
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.