Odczyt z pliku może być przeprowadzany na 2 sposoby jeden to
"niskopoziomowe" czytanie danych z pliku za pomocą funkcji
fread( int wskaźnik, int długość). Czyta
ona dane odczytane z pliku, określonego przez utworzony
wcześniej „wskaźnik” (jak pisałem wcześniej,
wskaźniki są zwracane przez funkcję
fopen()). Dane są czytane do długości
określonej w drugim parametrze. Jeśli danych jest mniej niż
podana długość, to poprostu zwrócone zostaną wszystkie dane z
pliku.
Funkcja fread() powoduje przesunięcie
wewnętrznego wskaźnika pliku - do miejsca, w którym zakończyło
się czytanie. Może teraz jakiś przykład. Mamy przykładowy plik
test.txt - z dowolną treścią.
Przykład 11.2. Odczyt danych z pliku
<?php $fp = fopen("test.txt", "r"); $tekst = fread($fp, 10); ?>
|
Funkcją fopen otwarty został plik do
odczytu a następnie odczytanych zostało z niego 10 znaków, a
więc zmienna $tekst będzie zawierała "To jest
pr". Przesunięty został wewnętrzny wskaźnik pliku, a więc
następne wywołanie linii "$tekst = fread($fp, 10)" spowoduje, że
w tej zmiennej będzie tekst "zykładowy " - poprostu następne
czytanie zacząło się od miejsca, w który zakończyło czytać
poprzednie wywołanie tej funkcji.
Jeszcze może praktyczny przykład - jak wczytać cały plik do
zmiennej? Trzeba do tego użyć jeszcze jednej funkcji -
filesize( string nazwa_pliku ). Jak widać,
różni się ona od pozostałych funkcji tym, że nie pobiera jako
parametr wskaźnika do pliku ale nazwę pliku. Pobieranie całości
pliku do zmiennej można załatwić jedną linijką.
Przykład 11.3. Wczytywanie całości pliku
<?php $dane = fread(fopen("nazwa_pliku", "r"), filesize("nazwa_pliku")); ?>
|
Funkcja fread() będzie czytać dane bez
przerwy - od początku pliku do końca, ignorując znaki końca
linii - dla tej funkcji to poprostu zwykły znak.
Cały plik można wczytać też w jeszcze jeden sposób. Funkcja
file($nazwa_pliku) zwraca tablicę, w której każdy element jest
osobnym wierszem z pliku, którego nazwa jest podana w parametrze. Funkcję tą
można wykorzystać do wczytania całego pliku do jednego stringa.
Przykład 11.4. Wczytywanie całości pliku przy użyciu funkcji file
<?php $plik = implode('', file('nazwa_pliku')); ?>
|
Samo wczytanie pliku do tablicy może być przydatne. Traktując
plik jako bazę danych, w której każdy wiersz to jeden rekord,
wczytanie takiego pliku od razu do tablicy oszczędza wiele pracy
przy ręcznym rozbijaniu pliku na wiersze.