Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]fgets konkretna linijka tekstu
Forum PHP.pl > Forum > Przedszkole
tenior
Witam,
mam problem, chcę zaimportować na stronę konkretną linię tekstu z pliku cfg.ini.
W necie znalazłem kod, trochę go przerobiłem, ale on zwraca mi cały plik.
  1. <?php
  2. $uchwyt = @fopen ("/home/tenior/www/test/plik.txt", "r");
  3. if ($uchwyt) {
  4. while (!feof($uchwyt)) {
  5.    $buffer = fgets($uchwyt, 4096);
  6.    echo $buffer;
  7.    }
  8. fclose ($uchwyt);
  9. }
  10. ?>


Może ktoś pomóc?
isso
http://www.hscripts.com/tutorials/php/file...ading-lines.php

czytanie linia po lini - musisz wiedzieć, gdzie jest to, co Cię interesuje smile.gif i wtedy np. dokladnie na tej lini ma się zatrzymać lub też preg_match smile.gif
tenior
no dobrze, ale gdzie się dodaje jaką linie ma wczytywać?
isso
nie mozna chyba zrobic czegos na zasadzie: weź mi wczytaj linię 210 ;] musisz czytać plik po koleji i po prostu np. wyrazeniami regularnymi odneleźć to czego szukasz... lub też np. mozesz zrobić zmienną zliczającą ilość lini i np. jezeli ona bedzie równa ileś tam to wypisać tą linię i przerwać działanie programu.
phpion
Nie sprawdzałem ale powinno zadziałać:
  1. <?php
  2. function wczytaj_linie($nazwa_pliku, $numer_linii) {
  3.    $licznik = 1;
  4.    
  5.    $plik = fopen($nazwa_pliku, 'r');
  6.    
  7.    while (!feof($plik)) {
  8.        $linia = chop(fgets($plik, 1024));
  9.        
  10.        if ($licznik == $numer_linii) {
  11.            fclose($plik);
  12.        
  13.            return $linia;
  14.        }
  15.        
  16.        $licznik++;
  17.    }
  18.    
  19.    fclose($plik);
  20. }
  21.  
  22. echo wczytaj_linie('plik.txt', 10);
  23. ?>

Wywołanie wczytaj_linie('plik.txt', 10) powinno zwrócić dziesiątą linię z pliku plik.txt.
ddiceman
jak plik nie jest za duzy mozesz wpakowac go calego do pamieci i odczytacp otrzebna Ci linie:
  1. <?php
  2. $plik = file('cfg.ini');
  3.   echo $plik[$nr_linii];
  4. ?>


no albo:
  1. <?php
  2. $uchwyt = @fopen ("/home/tenior/www/test/plik.txt", "r");
  3. if ($uchwyt) {
  4. for($i=0; $i<$nr_linii && !feof($uchwyt); $i++) {
  5.   $buffer = fgets($uchwyt, 4096);
  6. }
  7. if(!feof($uchwyt)) echo($buffer);
  8. fclose ($uchwyt);
  9. }
  10. ?>
tenior
phpion, pomógł
reszta skryptów nie działa, mam jeszcze pytanie. Wyciąga konkretną linijkę tekstu:
MaxClients=9
a jak zrobić żeby wczytywało nam tylko numer tego?
tenior
Jest rozwiązanie:
Plik cfg.ini
; początek pliku
MaxClients=83
; koniec

  1. <?php
  2.  
  3. $the_array = parse_ini_file("/home/tenior/www/test/cfg.ini");
  4. echo $the_array["MaxClients"];
  5.  
  6. ?>


zwraca wartość:
83
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.