file_get_contents

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

file_get_contentsСчитывает содержимое файла в строку

Описание

file_get_contents(
    string $filename,
    bool $use_include_path = false,
    ?resource $context = null,
    int $offset = 0,
    ?int $length = null
): string|false

Функция похожа на функцию 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://.

Смотрите также

  • file() - Читает содержимое файла и помещает его в массив
  • fgets() - Получает строку из указателя на файл
  • fread() - Читает файл в бинарно-безопасном режиме: как последовательность байтов
  • readfile() - Выводит файл
  • file_put_contents() - Записывает данные в файл
  • stream_get_contents() - Читает оставшуюся часть потока в строку
  • stream_context_create() - Создаёт контекст потока
  • $http_response_header