Jak operować na pliku tekstowym linijka po linijce?

piechnat

Do pobierania danych z pliku można zabrać się na wiele sposobów. Jednym z najbardziej wygodnych i nieeleganckich rozwiązań jest funkcja file(), która pobiera zawartość pliku do tablicy gdzie każdym
jej elementem jest kolejna linia z pliku. Przy wykonywaniu operacji na takiej tablicy należy pamiętać, że każdy pobrany w ten sposób element zawiera znaki końca linii \r i \n (ASCII 13 i ASCII 10).
Przykład:

<?php
    $plik = file('./plik.txt'); // pobranie zawartości pliku do tablicy
    $linia3 = $plik[2]; // tablica indeksowana jest od 0, dlatego $plik[2]
    $linia3 = chop($linia3); // funkcja chop() usuwa znaki końca linii
?>

Funkcja file() nie jest jednak najlepszym rozwiązaniem kiedy chcemy pobrać tylko 3 linię a plik zawiera ich np. 200. W tym celu lepiej skorzystać z konwencjonalnych metod, czyli:

<?php
    $fp = fopen('./plik.txt', 'r'); // otwarcie pliku tylko do odczytu ("r")
    flock($fp, 1); // blokowanie pliku do odczytu
    $i = 0;
    while(!feof($fp) && $i < 3) { // do póki nie ma końca pliku lub nie ma 3 linii
      $linia = fgets($fp, 2048); // pobranie jednej linii do zmiennej $linia
      $i++;
    }
    flock($fp, 3); // odblokowanie pliku
    fclose($fp); // zamknięcie pliku
?>

W zmiennej $linia znajduje się teraz 3 linia pliku lub - jeśli plik tylu nie posiada - jego ostatnia linia.

0 komentarzy