[PHP] – Pliki tekstowe – Podstawowe zagadnienia

Podstawy związane z tworzeniem,zapisywaniem,wyświetlaniem i nadpisywaniem na plikach tekstowych przy użyciu języka PHP.

Zapisywanie danych do pliku tekstowego jest drugim typem zapisu danych z formularza lub tablic innym niż użycie MySQL’a. Zapis danych do pliku jest dużo prostsze niż zapisywanie do bazy danych zarazem lepsze dla początkujących z językiem PHP.

Pierwszą rzeczą związaną z tym tematem będzie tworzenie pliku. Możemy stworzyć plik normalnie w systemie albo za pomocą “fopen()”:

$plik = fopen(“plik.txt”, “w”)

W nawiasie podane jest nazwa do pliku lub ścieżka jeżeli chcemy plik gdzie indziej oraz litera “w” która jest zmienną tej funkcji którą omówię później. Funkcja “fopen()” nie tylko służy do tworzenia ale też otwierania plików by można było zapisywać,dopisywać lub wyświetlać dane w pliku. Oprócz samego wpisania zmiennej należy również podać zmienna(“tryb”) w jaki sposób ma być otworzony lub stworzony plik. Lista trybów tej funkcji:

  1. “r” – Otwiera tylko do odczytu; umieszcza wskaźnik pliku na jego początku.
  2. “r+” – Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku.
  3. “w” – Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.
  4. “w+” – Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.
  5. “a” – Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
  6. “a+” – Otwiera do odczytu i zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
  7. “x” – Tworzy i otwiera plik tylko do zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik już istnieje, wywołanie “fopen()” nie powiedzie się, zwróci “FALSE" i wygeneruje błąd na poziomie “E_WARNING". Jeśli plik nie istnieje, spróbuje go utworzyć.
  8. “x+” – Tworzy i otwiera plik odczytu i zapisu; umieszcza wskaźnik pliku na jego początku. Jeśli plik już istnieje, wywołanie “fopen()” nie powiedzie się, zwróci “FALSE" i wygeneruje błąd na poziomie “E_WARNING". Jeśli plik nie istnieje, spróbuje go utworzyć.

Przejdźmy do następnej rzeczy czyli do zapisu danych do pliku oraz nadpisaniu jego zawartości. Aby zapisać do pliku dane z zmiennej użyjemy “fwrite()”. Przykład funkcji:

$plik = fopen(“plik.txt”, “w”) or die(“Nie można otworzyć pliku.”);
$txt = “Przykład 1\n”;
fwrite($plik, $txt);
$txt = “Przykład 2\n”;
fwrite($plik, $txt);
fclose($plik);

W pierwszej linii jest tworzenie i otworzenie pliku jeżeli go nie otworzy to wyskoczy komunikat o błędzie, następnie kolejne 4 linijki odpowiadają za zapisanie zmiennych. Zmienne “txt” przechowują dane które  na końcu mają załamanie linii. Funkcja “fwrite()” w nawiasie ma na 1 miejscu odwołanie do zmiennej plik gdzie jest otworzenie pliku a następnie po przecinku do zmiennej która ma być zapisana do pliku. Cały skrypt kończy się funkcją “fclose()” która zamyka pliku.

Żeby nadpisać dane w pliku należy tylko użyć tego samego skryptu i wtedy zmienić tylko zawartości zmiennych i będziemy mieć inne dane w pliku.

Kolejną rzeczą związaną z plikami jest ich wyświetlenie. Jest kilka sposobów wyświetlania danych z pliku tekstowego. Pierwszą z nich jest użycie funkcji “readfile”:

echo readfile(“plik.txt”)

Drugą możliwością wyświetlenia danych jest “fread()”:

$plik = fopen(“plik.txt”, “w”) or die(“Nie można otworzyć pliku.”);
echo fread($plik,filesize(“plik.txt”));
fclose($plik);

Funkcja “fread()” w nawiasie najpierw ma odwołanie do zmiennej z otworzeniem pliku a następnie użyta jest funkcja “filesize()” i w nawiasie nazwa pliku,który służy do pobrania rozmiaru pliku dzięki czemu wyświetli się cała zawartość pliku. To rozwiązanie wyświetli dane w pliku w jednym ciągu bez załamań jeżeli chcemy w osobnych liniach wtedy należy użyć pętli “while” oraz funkcji “fgets()” oraz “feof()”. Funkcja “fgets()” czyta ona jedną linię pliku, dopóki nie napotka znacznika przejścia do kolejnej linii a funkcja “feof()” sprawdza czy wskaźnik pliku jest na końcu pliku (End of file). Przykład takiego skryptu:

$plik = fopen(“plik.txt”, “w”) or die(“Nie można otworzyć pliku.”);
while(!feof($plik)) {
  echo fgets($plik) . “<br>”;
}
fclose($plik);

Dodaj komentarz