skanuj0186 (4)

skanuj0186 (4)



198 PHP i MySQL dla każdego

gdzie deskryptor określa plik otworzony za pomocą funkcji fopen, a ile — maksymalną liczbę znaków do odczytu. Parametr i le jest opcjonalny począwszy od wersji 4.2.0. Wartość domyślna w wersjach do 4.3 wynosi 1024. Począwszy od wersji 4.3, jeśli parametr ile nie został podany, odczyt pliku jest kontynuowany tak długo, aż zostanie odnaleziony znak końca linii lub osiągnięty koniec pliku.

Każde wywołanie funkcji zwraca jeden wiersz tekstu, nie dłuższy niż i le znaków, i przesuwa wskaźnik pliku o liczbę odczytanych znaków. Tym samym funkcję fgets najczęściej stosuje się w pętli while, sprawdzającej osiągnięcie końca pliku. Taki test przeprowadza się za pomocą funkcji feof, która zwraca wartość true w przypadku wykrycia, że wskaźnik pozycji pliku znajduje się na jego końcu. Zobaczmy to na konkretnym przykładzie, który został przedstawiony na listingu 7.8. Działanie skryptu polega na odczytaniu wiersz po wierszu zawartości pliku test.txt, umieszczonego w katalogu bieżącym.

Listing 7.8. Odczyt zawartości pliku za pomocą funkcji fgets_

<html>

<head>

<title>0dczyt zawartości pliku tekstowego</title>

</head>

<body>

<?php

if(!$fd = fopenCtest.txt'. 'r')) exit("Nie mogę otworzyć pliku test.txt"): while(!feof($fd)){ tstr = fgets(Jfd):

$str - str_replace("\n", "<br>\ Sstr): echo(Sstr);

}

fclose(Sfd):

?>

</body>

</html>

Plik test.txt jest otwierany za pomocą funkcji fopen w trybie r, czyli tylko do odczytu.

W przypadku niepowodzenia tej operacji (kiedy funkcja zwróci wartość false) skrypt kończy działanie, wysyłając do przeglądarki komunikat informujący o błędzie. Jeśli jednak otwarcie pliku zakończy się sukcesem, w pętli while za pomocą funkcji fgets są odczytywane i przypisywane zmiennej str kolejne wiersze tekstu. Każdy odczytany wiersz przetwarzany jest w taki sposób, że występujący w nim znak końca linii jest zamieniany na znacznik <br>, dzięki czemu w przeglądarce zostanie zaprezentowany taki sam układ wierszy, jak w pliku tekstowym (rysunek 7.4). Jeśli do takiej zamiany nie dojdzie, cała treść pliku zostanie wyświetlona w przeglądarce jako jeden długi wiersz. Łatwo się o tym przekonać, usuwając ze skryptu linię wykonującą funkcję str_repl ace.! Osiągnięty zostanie wtedy efekt taki, jak zaprezentowany na rysunku 7.5.

Pętla while kończy się, kiedy funkcja feof zwróci wartość true, czyli zostanie osią- 1 gnięty koniec pliku (gdy zostanie odczytany ostatni wiersz tekstu). Ściślej funkcja ta testuje położenie wskaźnika pozycji w pliku. Ten wskaźnik (zapamiętywany przez sys-tern) po otwarciu pliku w trybie r znajduje się na początku pliku (na pozycji zerowej). | Każde wywołanie funkcji fgets przesuwa go do przodu o liczbę odczytanych bajtów, j


Wyszukiwarka

Podobne podstrony:
skanuj0217 (4) 230 PHP i MySQL dla każdego w sesji. Zmienne należy usunąć ręcznie za pomocą przeznac
skanuj0161 (9) 172 PHP i MySQL dla każdego Zwraca ona ciąg strl, z którego począwszy od znaku o inde
skanuj0163 (9) 174 PHP i MySQL dla każdego Listing 6.12. Wykorzystanie funkcji strtok <?php $str

więcej podobnych podstron