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.