file_get_contents

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contentsOdczytuje 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

Ta funkcja jest stosunkowo podobna do file(), z tą różnicą, że file_get_contents() zwraca zawartość pliku jako string, rozpoczynając od miejsca określonego w argumencie offset, aż do maksymalna_dlugosc. W przypadku niepowodzenia file_get_contents() zwróci FALSE.

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żenie

Ta 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 offsetu 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'NULLNULL2014);
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);
?>

Rejestr zmian

Wersja Opis
7.1.0 Dodano wsparcie dla ujemnych offsetów.
5.1.0 Dodano parametry offset i maksymalna_dlugosc.

Notatki

Informacja: Tę funkcję można stosować dla danych binarnych.

Wskazówka

Jeś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żenie

Nawią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ń.

Zobacz też:

add a note add a note

User Contributed Notes 2 notes

up
40
Bart Friederichs
12 years ago
file_get_contents can do a POST, create a context for that first:

<?php

$opts
= array('http' =>
  array(
   
'method'  => 'POST',
   
'header'  => "Content-Type: text/xml\r\n".
     
"Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
   
'content' => $body,
   
'timeout' => 60
 
)
);
                       
$context  = stream_context_create($opts);
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);

?>
up
-1
allenmccabe at gmail dot com
2 years ago
I'm not sure why @jlh was downvoted, but I verified what he reported.

>>> file_get_contents($path false, null, 5, null)
=> ""
>>> file_get_contents($path, false, null, 5, 5)
=> "r/bin"
To Top