(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Считывает содержимое файла в строку
$filename
,$use_include_path
= false
,$context
= null
,$offset
= 0,$length
= null
Функция похожа на функцию file(), за исключением того,
что функция file_get_contents() возвращает
содержимое файла в строке длиной length
байтов со смещения offset
.
В случае неудачи функция file_get_contents() вернёт false
.
Вызов функции file_get_contents() наиболее предпочтителен, когда требуется получить содержимое файла целиком, поскольку для улучшения производительности функция использует технику отображения файла в памяти (memory mapping), если операционная система её поддерживает.
Замечание:
При открытии URI, который содержит спецсимволы наподобие пробела, URI-идентификатор кодируют функцией urlencode().
filename
Имя читаемого файла.
use_include_path
Замечание:
Разрешается указывать константу
FILE_USE_INCLUDE_PATH
для поиска файла в списке путей include path. Обратите внимание, в коде со строгой типизацией так сделать не получится, потому что значение константыFILE_USE_INCLUDE_PATH
принадлежит типу int. Тогда лучше задатьtrue
.
context
Корректный ресурс контекста, который возвращает функция
stream_context_create().
Чтобы пропустить параметр, в него передают значение null
,
когда особый контекст не нужен.
offset
Смещение, с которого начнётся чтение оригинального потока. Отрицательное значение смещения будет отсчитываться с конца потока.
Поиск смещения (offset
) не поддерживается при
работе с удалёнными файлами. Попытка поиска смещения на нелокальных
файлах может работать при небольших смещениях, но результат будет
непредсказуемым, так как функция работает на буферизованном потоке.
length
Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.
Функция возвращает прочтённые данные или false
, если возникла ошибка.
Функция
возвращает как логическое значение false
,
так и нелогическое значение, которое приводится к false
.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.
Функция выдаёт ошибку уровня E_WARNING
,
если не получится найти файл filename
, для параметра length
задали значение меньше нуля или поиск по смещению offset
в потоке
завершится неудачно.
Когда функция file_get_contents() вызывается для каталога,
в ОС Windows генерируется ошибка уровня E_WARNING
,
а с PHP 7.4 и в других операционных системах.
Версия | Описание |
---|---|
8.0.0 |
Параметр length теперь принимает значение null .
|
7.1.0 |
Добавили поддержку отрицательных значений для смещения offset .
|
Пример #1 Пример получения и вывода исходного кода домашней страницы сайта
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
Пример #2 Поиск файлов в include_path
<?php
// Если включили строгую типизацию, то есть объявили (strict_types=1);
$file = file_get_contents('./people.txt', true);
// Иначе
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
Пример #3 Чтение секции файла
<?php
// Читаем 14 символов, начиная с 21 символа
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
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);
?>
Замечание: Функция безопасна для обработки данных в двоичной форме.
В эту функцию в качестве имени файла можно передавать URL-адреса, если была включена директива fopen wrappers. Подробнее о том, как указать имя файла, рассказано в описании функции fopen(). В разделе «Протоколы и обёртки» также даны ссылки на информацию о способностях поддерживаемых обёрток, замечания по работе с ними и список предопределённых переменных, которые они дают.
При работе с сервером Microsoft IIS
по SSL-протоколу разработчик сталкивается с тем, что IIS-сервер
нарушает протокол путём закрытия соединения без отправки индикатора close_notify
.
PHP выдаст ошибку в виде сообщения «SSL: Fatal Protocol Error» при достижении конца данных.
Чтобы избежать такого поведения, значение директивы error_reporting снижают до уровня,
который не включает предупреждений уровня E_WARNING. PHP умеет обнаруживать ошибочное программное обеспечение IIS-сервера
при открытии потока через обёртку https://
, и подавляет предупреждение.
За обнаружение и подавление предупреждения отвечает разработчик, который вызывает функцию
fsockopen(), чтобы создать сокет ssl://
.