Plik PHP Otwórz/Odczytaj/Zamknij
W tym rozdziale nauczymy Cię, jak otwierać, czytać i zamykać plik na serwerze.
Otwórz plik PHP - fopen()
Lepszą metodą otwierania plików jest fopen()
funkcja. Ta funkcja daje więcej opcji niż readfile()
funkcja.
Podczas lekcji będziemy korzystać z pliku tekstowego „webdictionary.txt”:
AJAX = Asynchronous JavaScript and XML
CSS = Cascading Style Sheets
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Structured Query Language
SVG = Scalable Vector Graphics
XML = EXtensible Markup Language
Pierwszy parametr fopen()
zawiera nazwę pliku, który ma zostać otwarty, a drugi parametr określa, w jakim trybie plik ma zostać otwarty. Poniższy przykład generuje również komunikat, jeśli funkcja fopen() nie może otworzyć określonego pliku:
Przykład
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>
Wskazówka: funkcje fread()
i fclose()
zostaną wyjaśnione poniżej.
Plik można otworzyć w jednym z następujących trybów:
Modes | Description |
---|---|
r | Open a file for read only. File pointer starts at the beginning of the file |
w | Open a file for write only. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file |
a | Open a file for write only. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist |
x | Creates a new file for write only. Returns FALSE and an error if file already exists |
r+ | Open a file for read/write. File pointer starts at the beginning of the file |
w+ | Open a file for read/write. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file |
a+ | Open a file for read/write. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist |
x+ | Creates a new file for read/write. Returns FALSE and an error if file already exists |
Plik do odczytu PHP - fread()
Funkcja fread()
czyta z otwartego pliku.
Pierwszy parametr fread()
zawiera nazwę pliku do odczytania, a drugi parametr określa maksymalną liczbę bajtów do odczytania.
Poniższy kod PHP wczytuje na końcu plik „webdictionary.txt”:
fread($myfile,filesize("webdictionary.txt"));
PHP Zamknij plik - fclose()
Funkcja fclose()
służy do zamykania otwartego pliku.
Dobrą praktyką programistyczną jest zamknięcie wszystkich plików po ich zakończeniu. Nie chcesz, aby otwarty plik biegał po twoim serwerze i zajmował zasoby!
Wymaga nazwy pliku ( fclose()
lub zmiennej przechowującej nazwę pliku), który chcemy zamknąć:
<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>
PHP Odczyt pojedynczej linii - fgets()
Funkcja fgets()
służy do odczytania pojedynczej linii z pliku.
Poniższy przykład wyświetla pierwszy wiersz pliku „webdictionary.txt”:
Przykład
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
Uwaga: Po wywołaniu fgets()
funkcji wskaźnik pliku został przeniesiony do następnej linii.
PHP Sprawdź koniec pliku - feof()
Funkcja feof()
sprawdza, czy osiągnięto „koniec pliku” (EOF).
Funkcja feof()
jest przydatna do przeglądania danych o nieznanej długości.
Poniższy przykład odczytuje plik „webdictionary.txt” wiersz po wierszu, aż do osiągnięcia końca pliku:
Przykład
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
PHP Czytaj pojedynczy znak - fgetc()
Funkcja fgetc()
służy do odczytania pojedynczego znaku z pliku.
Poniższy przykład odczytuje plik "webdictionary.txt" znak po znaku, aż do osiągnięcia końca pliku:
Przykład
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// Output one character until end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
Uwaga: Po wywołaniu fgetc()
funkcji wskaźnik pliku przechodzi do następnego znaku.
Kompletne informacje o systemie plików PHP
Aby uzyskać pełne informacje o funkcjach systemu plików, przejdź do naszego kompletnego podręcznika PHP Filesystem Reference .