array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.file-get-contents.php', 1 => 'file_get_contents', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Функции файловой системы', ), 'prev' => array ( 0 => 'function.file-exists.php', 1 => 'file_exists', ), 'next' => array ( 0 => 'function.file-put-contents.php', 1 => 'file_put_contents', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/filesystem/functions/file-get-contents.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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() возвращает
содержимое файла в строке, начиная с указанного смещения
offset
и до length
байт. В случае неудачи, 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(). В разделе «Поддерживаемые протоколы и обёртки» также даны ссылки на информацию о способностях поддерживаемых обёрток, замечания по работе с ними и список предопределённых переменных, которые они дают.
При использовании SSL,
Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify
.
PHP сообщит об этом как «SSL: Fatal Protocol Error» в тот момент, когда будет достигнут конца данных.
Чтобы обойти это, нужно установить директиву error_reporting на уровень,
исключающий E_WARNING. PHP умеет определять, что на стороне сервера проблемный IIS
при открытии потока обёрткой https://
и не выводит предупреждение.
Если разработчик создаёт сокет ssl://
через вызов функции fsockopen(),
он сам отвечает за определение и подавление этого предупреждения.