Odczytywanie zawartości pliku txt z php

Aby pracować z plikami .txt możemy użyć metody fopen(), która przyjmuje 2 argumenty
Pierwszy argument to adres pliku, a drugi określa tryb otwarcia pliku.
Lista argumentów z opisem znajduje się w poniższej tabeli.

rOtwiera plik w trybie odczytu. Kursor ustawiony jest na początku pliku
wKasuje zawartość istniejącego pliku lub tworzy nowy jeśli taki nie istnieje. Kursor ustawiony jest na początku pliku
aKursor ustawiony jest na końcu pliku
r+Otwiera plik w trybie odczytu i zapisu. Kursor ustawiony jest na początku pliku
w+Otwiera plik w trybie odczytu i zapisu. Kasuje zawartość istniejącego pliku lub tworzy nowy, jeśli taki nie istnieje. Kursor ustawiony jest na początku pliku
a+Otwiera plik w trybie odczytu i zapisu. Kursor ustawiony jest na końcu pliku

W przypadku, gdy użyjemy argumentu 'r’, dla pliku, który nie istnieje, dostaniemy informacje o błędzie.
W przypadku, gdy użyjemy argumentu 'w’ dla pliku, który nie istnieje, zostanie on utworzony. Należy pamiętać, że poprzednia zawartość zostanie usunięta.

Generalnie mówiąc, jeśli planujemy tylko zapisywać dane możemy użyć w lub a, a jeśli w tej samej sesji planujemy zapisywać i odczytywać dane z pliku to użyjemy w+ lub a+.

Aby wyświetlić zawartość pliku, możemy użyć metody fread(), która przyjmuje 2 argumenty: ścieżkę pliku i rozmiar pliku do odczytania.
Poniżej przykład otwarcia i odczytania zawartości pliku sprawdzając jednocześnie czy dany plik istnieje. Na koniec zamykamy stream funkcją fclose().

<?php
$filepath = 'mojplik.txt';
if(file_exists($filepath)){
    $filestream = fopen($filepath,'r') or die('Unable to open');
    echo fread($filestream, filesize($filepath));
    fclose($filepath);
}

Czytanie pliku linia po linii

Czytanie pliku linia po linii za pomocą fgets(). Do tego pomocna jest również metoda feof(), która mówi, czy dotarliśmy do końca pliku.
Metoda fgets() różni się od fread(), ponieważ fread() zaczyta dane bez podziału na osobne linie.

<?php
$filepath = 'mojplik.txt';
if(file_exists($filepath)){
    $filestream = fopen($filepath,'r') or die('Unable to open');
    while(!feof($filestream)){
        echo fgets($filestream).'<br>';
    }
    fclose($filestream);
}else{
    echo 'plik nie istnieje';
}

Czytanie plików znak po znaku

W podobny sposób możemy użyć funkcji fgetc(), dzięki której będziemy czytać plik znak po znaku, np:

<?php
$filepath = 'mojplik.txt';
if(file_exists($filepath)){
    $filestream = fopen($filepath,'r') or die('Unable to open');
    while($char = fgetc($filestream)){
        echo $char.'-';
    }
    fclose($filestream);
}else{
    echo 'plik nie istnieje';
}

Scroll to Top