file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
file_get_contents — Odczytuje cały plik i zwraca łańcuch znaków
Opis
file_get_contents
( string $nazwa_pliku
[, bool $use_include_path
= false
[, resource $kontekst
[, int $offset
= 0
[, int $maksymalna_dlugosc
]]]] ) : string
file_get_contents() jest zalecaną metodą do odczytania całej
zawartości pliku jako łańcuch znaków. Korzysta ona z zaawansowanych
technik zarządzania pamięci (zależnych od systemu), aby zapewnić wysoką wydajność.
Informacja:
Jeżeli jest potrzeba przekazania do funkcji URI ze znakami specjalnymi, takimi jak spacje, należy
zakodować adres przy użyciu urlencode().
Parametry
-
nazwa_pliku
-
Ścieżka do otwieranego pliku.
-
use_include_path
-
Informacja:
Od PHP 5 można skorzystać ze stałej FILE_USE_INCLUDE_PATH
aby aktywować szukanie w include path.
-
kontekst
-
Właściwy zasób kontekstu utworzony z pomocą funkcji
stream_context_create(). Jeżeli nie ma konieczności stosowania
własnego kontekstu, można pominąć ten parametr podając NULL
.
-
offset
-
Określa offset, od którego ma rozpocząć się czytanie w pliku.
Ujemne offsety liczą od końca strumienia danych.
Szukanie (offset
) nie jest możliwe dla plików zdalnych.
Próby szukania podejmowane na zdalnych plikach mogą działać z małymi offsetami, ale
jest to nieprzewidywalne, bo opiera swoje działanie na buforowanym strumieniu danych.
-
maksymalna_dlugosc
-
Maksymalna długść danych do odczytania. Domyślnie, funkcja będzie czytać
do samego końca pliku. Należy zauważyć że ten parametr jest stosowany do
strumienia przetwarzanego przez filtry.
Zwracane wartości
Funkcja zwraca odczytane dane lub FALSE
w przypadku niepowodzenia.
OstrzeżenieTa funkcja może
zwrócić Boolean FALSE
, ale może też zwrócić wartość innego typu niż Boolean, która oznacza
wartość FALSE
. Aby uzyskać więcej informacji proszę zapoznać się z rozdziałem Typy logiczne.
Można używać operatora ===
do testowania zwracanych wartości przez tę
funkcję.
Błędy/Wyjątki
Błąd o poziomie E_WARNING
występuje gdy plik określony jako nazwa_pliku
nie zostanie znaleziony, maksymalna_dlugosc
jest mniejsza od zera lub jeśli szukanie do określonego offset
u nie powiedzie się.
Przykłady
Przykład #1 Pobranie wynikowego HTML strony internetowej
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
Przykład #2 Szukanie w obrębie include_path
<?php
// <= PHP 5
$file = file_get_contents('./people.txt', true);
// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
Przykład #3 Odczytywanie części pliku
<?php
// Odczytaj 14 znaków poczynając od 21
$section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
var_dump($section);
?>
Powyższy przykład wyświetli coś
podobnego do:
string(14) "lle Bjori Ro"
Przykład #4 Użycie kontekstów
<?php
// Utwórz strumień
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Pobiera podany URL korzystając z nagłówków HTTP podanych powyżej
$file = file_get_contents('http://www.example.com/', false, $context);
?>
Notatki
Informacja: Tę funkcję można stosować dla danych binarnych.
WskazówkaJeśli włączona jest dyrektywa
konfiguracyjna fopen wrappers,
możliwe jest podanie jako nazwy pliku adresu URL. Zobacz opis funkcji
fopen() aby dowiedzieć się jak przekazać nazwę pliku, oraz
fopen wrappers aby uzyskać listę
obsługiwanych protokołów.
OstrzeżenieNawiązując połączenie przez SSL, serwer
Microsoft IIS narusza reguły protokołu przez zamknięcie połączenia bez
wysłania wskaźnika close_notify. Po przesłaniu całości danych
PHP zgłosi to jako "SSL: Fatal Protocol Error". Aby obejść ten błąd, wystarczy obniżyć
poziom raportowania błędów error_reporting,
tak aby nie były wyświetlane ostrzeżenia.
PHP sam wykrywa błąd serwera IIS przy otwieraniu
strumienia https:// i za pomocą nakładki i pomijają ostrzeżenia.
Używając funkcji fsockopen() do otwarcia gniazda
ssl:// programista sam musi zadbać o wyłączenie
ostrzeżeń.