Úvod >PHP >PHP manuál - funkce >file_get_contents

file_get_contents

file_get_contents($soubor, $include_path, $kontext, $zacatek, $delka)

Načte celý soubor (nebo jeho část) a vrátí obsah jako řetězec. Při chybě vrátí false. Umí číst i adresy na webu, pokud to server dovoluje.

Parametry

  • $soubor – cesta k souboru, nebo adresa.
  • $include_path – nepovinný, výchozí false. S true se soubor hledá i v cestách include_path.
  • $kontext – nepovinný, kontext ze stream_context_create() (časový limit, hlavičky).
  • $zacatek, $delka – nepovinné, od kterého bajtu a kolik bajtů načíst.

Příklady

$soubor = sys_get_temp_dir() . "/garth-ukazka.txt";
file_put_contents($soubor, "Hello world");
echo file_get_contents($soubor); // Hello world
// jen část: od šestého bajtu pět bajtů
echo file_get_contents($soubor, false, null, 6, 5); // world
// neexistující soubor: false a varování (tady potlačené @)
var_dump(@file_get_contents(sys_get_temp_dir() . "/neexistuje.txt")); // bool(false)
// JSON ze souboru
file_put_contents($soubor, '{"jmeno":"Jan","vek":30}');
$data = json_decode(file_get_contents($soubor), true);
echo $data["jmeno"]; // Jan
// stahování z webu s časovým limitem a vlastní hlavičkou
$kontext = stream_context_create(array("http" => array("timeout" => 5, "user_agent" => "garth.cz")));
// $html = file_get_contents("https://www.example.com/", false, $kontext);
var_dump(is_resource($kontext)); // bool(true)
unlink($soubor);

Na co si dát pozor

  • Výsledek porovnávejte přes === false. Prázdný soubor vrátí prázdný řetězec, který by obyčejná podmínka vzala jako chybu.
  • Cestu nikdy neskládejte ze vstupu od uživatele. Zápis ../ by přečetl libovolný soubor serveru včetně přístupů k databázi. Povolené soubory mějte v seznamu.
  • Načte celý soubor do paměti. Velké soubory čtěte po částech přes fopen() a fgets().
  • Čtení adres vyžaduje povolené allow_url_fopen a bez kontextu čeká na odpověď až 60 sekund (default_socket_timeout). Pro práci s API je vhodnější cURL.
  • Začátek a délka jsou v bajtech, u textu v UTF-8 mohou rozdělit písmeno s diakritikou.

Příbuzné funkce:
json_decode()
explode()
str_getcsv()
file_put_contents()
curl_exec()