file_get_contents

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

file_get_contentsЧитає вміст файла в рядку

Опис

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

Ця функція є подібною до функціїfile(), за виключенням того, що file_get_contents() повертає вміст файлу рядком (string), починаючи від зазначеного зміщення (offset), обмежуючись параметром максимальної довжини (maxlen) в байтах. При невдачі, file_get_contents() повертає FALSE.

file_get_contents() є кращим варіантом для читання вмісту файла в рядку. Вона буде використовувати технологію співставлення в пам'яті, якщо це підтримується вашою ОС для збільшення продуктивності.

Зауваження:

Якщо ви відкриваєте URI, що мають спец-символи, такі як пробіли, вам потрібно закодовувати URI за допомогою urlencode().

Параметри

filename

Назва файлу, який буде читатись.

use_include_path

Зауваження:

Починаючи з PHP 5 може використовуватись константа FILE_USE_INCLUDE_PATH для ініціювання пошуку в підключеному розташуванні (include path).

context

Коректний ресурс контекста, створений за допомогою функції stream_context_create(). Якщо вам не потрібно використовувати користувальницький контекст, ви можете пропустити цей параметр передавши в нього значення NULL.

offset

Зміщення, з якого починається читання в наданому потоці.

Пошук зміщення (offset) не підтримується для віддалених файлів. Зміщення на віддалених файлах може працювати з невеликими зміщеннями, але це є непередбачуваним, оскільки в такому разі використовується буферизація потоку.

maxlen

Максимальна довжина даних для читання. Початково, відбувається читання допоки не досягнуто кінця файлу. Майте на увазі, що цей параметр застосовується при обробці потоку через фільтри.

Значення, що повертаються

Функція повертає прочитані дані або FALSE в разі помилки.

Увага

Ця функція може повертати як логічне FALSE, так і нелогічне значення, яке прирівнюється до FALSE. Детальніше про це описується в розділі Логічний тип даних (Booleans). Використовуйте оператор === щоб перевірити значення, яке повертає дана функція.

Помилки/Винятки

Буде згенеровано помилку рівня E_WARNING, якщо файл (filename) не знайдено, максимальна довжина (maxlength) менша за нуль, або якщо відбулась невдала спроба зазначеного зміщення (offset) в потоці.

Приклади

Приклад #1 Отримання та вивід сирців домашньої сторінки веб-сайта

<?php
$homepage 
file_get_contents('http://www.example.com/');
echo 
$homepage;
?>

Приклад #2 Пошук всередині підключеного розміщення (include_path)

<?php
// <= PHP 5
$file file_get_contents('./people.txt'true);

// > PHP 5
$file file_get_contents('./people.txt'FILE_USE_INCLUDE_PATH);
?>

Приклад #3 Читання частини файла

<?php
// Читання 14 символів, починаючи від 21-го символу
$section file_get_contents('./people.txt'NULLNULL2014);
var_dump($section);
?>

Наведений вище приклад виведе щось подібне до:

string(14) "lle Bjori Ro" 

Приклад #4 Використання контексту потока

<?php
// Створення потока
$opts = array(
  
'http'=>array(
    
'method'=>"GET",
    
'header'=>"Accept-language: en\r\n" .
              
"Cookie: foo=bar\r\n"
  
)
);

$context stream_context_create($opts);

// Відкриття файла, використовуючи HTTP заголовки встановлені вище
$file file_get_contents('http://www.example.com/'false$context);
?>

Журнал Змін

Версія Опис
5.1.0 Додано параметри offset та maxlen.

Примітки

Зауваження: Ця функція є бінарно-безпечною.

Підказка

A URL can be used as a filename with this function if the fopen wrappers have been enabled. See fopen() for more details on how to specify the filename. See the Supported Protocols and Wrappers for links to information about what abilities the various wrappers have, notes on their usage, and information on any predefined variables they may provide.

Увага

When using SSL, Microsoft IIS will violate the protocol by closing the connection without sending a close_notify indicator. PHP will report this as "SSL: Fatal Protocol Error" when you reach the end of the data. To work around this, the value of error_reporting should be lowered to a level that does not include warnings. PHP 4.3.7 and higher can detect buggy IIS server software when you open the stream using the https:// wrapper and will suppress the warning. When using fsockopen() to create an ssl:// socket, the developer is responsible for detecting and suppressing this warning.

Прогляньте Також

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