Cześć! Dziś zajmiemy się prostym, ale bardzo przydatnym zagadnieniem w PHP, jakim jest wyświetlanie numeru linii oraz tekstu z pliku .txt
. Jeśli kiedykolwiek musiałeś przetwarzać pliki tekstowe w swoich projektach lub po prostu chcesz poznać, jak działa odczyt plików w PHP, to ten artykuł jest właśnie dla Ciebie.
W tym artykule przejdziemy przez cały proces, od podstawowych pojęć związanych z plikami tekstowymi, aż po kod PHP, który pozwoli wyświetlić numer linii oraz jej zawartość. Postaram się, aby było to jak najprostsze i zrozumiałe, więc bez zbędnego gadania – zaczynajmy!
Co to jest plik TXT i jak działa w PHP?
Plik TXT to najprostszy możliwy format pliku tekstowego. Zawiera on zwykły tekst, który jest zapisany bez żadnego specjalnego formatowania – po prostu ciąg znaków. Takie pliki są wykorzystywane w różnych aplikacjach, ponieważ są lekkie i łatwe do edytowania.
W PHP, pliki tekstowe można otworzyć, odczytać, zapisać lub edytować za pomocą różnych funkcji. Dwie najczęściej wykorzystywane funkcje to fopen()
do otwierania plików i fgets()
do odczytywania tekstu z tych plików linia po linii.
Jak to zrobić w PHP? Krok po kroku
Załóżmy, że mamy plik tekstowy o nazwie plik.txt
, który wygląda mniej więcej tak:
Pierwsza linia tekstu Druga linia tekstu Trzecia linia tekstu Czwarta linia tekstu
Chcemy napisać skrypt w PHP, który wyświetli numer linii oraz jej zawartość. Oto jak to zrobić:
1. Otwieranie pliku
Zaczniemy od otwarcia pliku do odczytu. W PHP używamy funkcji fopen()
, która zwraca uchwyt do pliku, jeśli uda się go otworzyć, lub false
w przypadku błędu.
$plik = fopen("plik.txt", "r"); if (!$plik) { die("Nie udało się otworzyć pliku!"); }
Tutaj fopen("plik.txt", "r")
otwiera plik w trybie tylko do odczytu. Jeśli plik się nie otworzy (np. nie istnieje), to die()
przerwie działanie skryptu i wyświetli odpowiedni komunikat.
2. Odczytywanie pliku linia po linii
Kiedy plik jest już otwarty, możemy odczytywać go linia po linii. Używamy do tego funkcji fgets()
, która zwraca zawartość jednej linii lub false
, jeśli osiągnięto koniec pliku.
$numerLinii = 1; // Zaczynamy od 1, ponieważ chcemy wyświetlić numer linii while (($linia = fgets($plik)) !== false) { echo "Linia {$numerLinii}: {$linia}<br>"; $numerLinii++; // Zwiększamy numer linii po każdej iteracji }
Tutaj:
- Zmienna
$numerLinii
będzie licznikiem, który zaczynamy od 1. - Funkcja
fgets($plik)
odczytuje jedną linię tekstu z pliku. echo
wyświetla numer linii oraz jej zawartość.- Po każdym odczytaniu linii zwiększamy zmienną
$numerLinii
, aby pokazać numer kolejnej linii.
3. Zamknięcie pliku
Po zakończeniu odczytu pliku ważne jest, aby zamknąć uchwyt do pliku. Robimy to za pomocą funkcji fclose()
:
fclose($plik);
To zakończy naszą pracę z plikiem i zwolni zasoby systemowe.
Kompletny kod PHP
Złączmy teraz wszystko w jeden kompletny skrypt:
<?php // Otwieramy plik $plik = fopen("plik.txt", "r"); if (!$plik) { die("Nie udało się otworzyć pliku!"); } // Inicjujemy licznik numeru linii $numerLinii = 1; // Odczytujemy plik linia po linii while (($linia = fgets($plik)) !== false) { echo "Linia {$numerLinii}: {$linia}<br>"; $numerLinii++; } // Zamykamy plik fclose($plik); ?>
Co możemy zrobić z tym kodem?
Ten kod jest bardzo podstawowy, ale już teraz daje nam możliwość:
- Odczytania zawartości pliku linia po linii.
- Wyświetlenia numeru linii obok jej treści.
- Wykonania tej operacji na każdym pliku tekstowym, który mamy dostępny.
Możesz go rozbudować o dodatkowe funkcje, np. dodawanie warunków do przetwarzania tylko określonych linii, zapisywanie zmian do pliku, czy bardziej zaawansowane operacje na danych z pliku.
Rozbudowa funkcjonalności
A co, jeśli chciałbyś na przykład wyświetlić tylko linie, które zawierają określone słowo lub frazę? Możemy dołożyć prostą funkcję strpos()
, aby sprawdzić, czy dany fragment tekstu występuje w każdej linii:
<?php $plik = fopen("plik.txt", "r"); if (!$plik) { die("Nie udało się otworzyć pliku!"); } $numerLinii = 1; $szukanaFraza = "tekst"; // Słowo, które chcemy wyszukać while (($linia = fgets($plik)) !== false) { if (strpos($linia, $szukanaFraza) !== false) { // Sprawdzamy, czy fraza występuje w linii echo "Linia {$numerLinii}: {$linia}<br>"; } $numerLinii++; } fclose($plik); ?>
W tym przypadku tylko linie zawierające frazę „tekst” zostaną wyświetlone.
Podsumowanie
Mamy nadzieję, że teraz masz jasny obraz tego, jak wyświetlać numer linii oraz tekst z pliku w PHP. W tym artykule:
- Otworzyliśmy plik tekstowy.
- Odczytaliśmy go linia po linii.
- Wyświetliliśmy numer każdej linii oraz jej zawartość.
- Na końcu zamknęliśmy plik.
Możesz teraz z powodzeniem implementować podobne funkcje w swoich projektach. Oczywiście, możliwości PHP w pracy z plikami tekstowymi są ogromne, więc zachęcam do eksperymentowania i rozszerzania kodu o dodatkowe funkcjonalności.
Pamiętaj, że praca z plikami może wiązać się z ryzykiem, np. jeśli plik jest bardzo duży, możesz napotkać problemy z wydajnością. W takich przypadkach warto rozważyć inne podejścia, np. odczyt pliku w strumieniach czy zastosowanie baz danych.