(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Замечание:
Для поиска файла в списке путей директивы include path в параметр перадают константу
FILE_USE_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 = [
'http' => [
'method' => "GET",
'header' => "Accept-language: en\r\n" .
"Cookie: foo=bar",
]
];
$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://.