(PHP 4 >= 4.3.0, PHP 5, PHP 7)
file_get_contents — Читает содержимое файла в строку
$filename
[, bool $use_include_path
= FALSE
[, resource $context
[, int $offset
= 0
[, int $maxlen
]]]] ) : string
Данная функция похожа на функцию file() с той лишь
разницей, что file_get_contents() возвращает
содержимое файла в строке, начиная с указанного смещения
offset
и до maxlen
байт. В случае неудачи, 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
) не поддерживается при
работе с удаленными файлами. Попытка поиска смещения на нелокальных
файлах может работать при небольших смещениях, но результат будет
непредсказуемым, так как функция работает на буферизованном потоке.
maxlen
Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.
Функция возвращает прочтенные данные или FALSE
в случае возникновения ошибки.
Эта функция может возвращать как логическое значение FALSE
, так и значение не типа boolean, которое приводится к FALSE
. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Будет сгенерирована ошибка уровня E_WARNING
в случаях,
если не удастся найти filename
, задан maxlength
меньше нуля, или поиск по смещению 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);
?>
Версия | Описание |
---|---|
7.1.0 |
Добавлена поддержка отрицательных значений offset .
|
5.1.0 |
Добавлены аргументы offset и
maxlen .
|
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в разделе Поддерживаемые протоколы и обертки.
При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как "SSL: Fatal Protocol Error" в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP умеет определять, что на стороне сервера находится проблемный IIS при открытии потока с помощью обертки https:// и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.