file_get_contents
(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|false
Данная функция похожа на функцию 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 .
|
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в разделе Поддерживаемые протоколы и обертки.
При использовании SSL, Microsoft 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