file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Считывает содержимое файла в строку
Описание
Вызов функции 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 и в других операционных системах.
Примеры
Пример #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://
.