Чтение файла. PHP функция file_get_contents
Статьи -> Программирование -> PHP
Чтение файла. PHP функция file_get_contents
v:1.0 31.01.2010
Перевод официальной документации.
file_get_contents
(PHP 4 >= 4.3.0, PHP 5)
file_get_contents — Читает все содержимое файла и выдает результат в виде строки
Прим. переводчика. На базе этой функции часто строятся простейшие HTML-парсеры. Т.е. указывается URL нужной HTML страницы.
Функция возвращает страницу в виде строки, которую по HTML-тегам обрабатывает парсер.
Описание
string file_get_contents ( string $filename [, int $flags = 0 [, resource $context [, int $offset = -1 [, int $maxlen = -1 ]]]] )Эта функция аналогична функции file(). Отличие заключается в том, что функция file_get_contents() возвращает файл в виде строки, которая начинается с заданного смещения (offset) и ограничивается максимальной длиной maxlen, задаваемой в байтах. В случае ошибки функция file_get_contents() возвращает FALSE.
file_get_contents() это лучший способ получать содержимое файла в виде строки. Для повышения быстродействия функция, если это позволяет делать операционная система, использует технологию memory mapping techniques.
Примечание: Если Вы открываете URI, содержащий специальные символы (например пробелы), Вам надо кодировать URI с помощью функции urlencode().
Примечание: Значение по умолчанию параметра maxlen не равно -1. По умолчанию значение этого параметра равно внутренней константе PHP, которая означает копировать все содержимое файла пока не встретится символ "конец файла". Если Вы хотите получить все содержимое файла, просто не используйте этот параметр.
Параметры
- filename
Имя файла, который надо прочитать.
- flags
-
Примечание: До версии PHP 6, этот параметр называется use_include_path, тип данных bool. Как и в PHP 5 параметр FILE_USE_INCLUDE_PATH может использоваться для указания, надо ли выполнять поиск в каталогах include path.
Значение параметра flags может быть представлено как комбинация следующих флагов (с некоторыми ограничениями), объединенных бинарной операцией И (|)
Возможные значения параметра flags значение описание FILE_USE_INCLUDE_PATH Искать filename в каталогах, описанных в параметре include_path. FILE_TEXT В PHP 6 кодировка файла по умолчанию установлена в UTF-8. Вы можете задать другую кодировку, создав пользовательский контекст (custom context) или используя stream_default_encoding(). Этот флаг не может использоваться с флагом (FILE_BINARY). FILE_BINARY Если этот флаг установлен, то файл будет прочитан в бинарном режиме. Это значение установлено по умолчанию и не может использоваться совместно с флагом FILE_TEXT. - context
-
Ресурс контекста (context resource) создается при помощи функции stream_context_create(). Если Вам не нужен пользовательский контекст (custom context), просто пропустите этот параметр, установив NULL.
- offset
-
Это смещение, с которого должно начаться чтение файла.
- maxlen
Максимальная длина данных, которые надо прочитать. Если значение не задано, файл будет прочитан до конца.
Возвращаемое значение
Функция возвращает прочитанные данные или FALSE в случае ошибки.
Примеры использования file_get_contents
Пример #1 Получение и вывод исходного текста домашней страницы web-сайта
<?php
$homepage
=
file_get_contents
(
'http://www.example.com/'
);
echo
$homepage;
?>
Пример #2 Поиск в каталогах include_path
<?php
// <= PHP 5
$file
=
file_get_contents
(
'./people.txt'
,
true
);
// > PHP 5
$file
=
file_get_contents
('./people.txt'
, FILE_USE_INCLUDE_PATH
);
?>
Пример #3 Чтение части файла
<?php
//Будет прочитано 14 символов, начиная с 21го
$section =
file_get_contents
(
'./people.txt'
, NULL
, 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
);
?>
История изменения
Версия | Описание |
---|---|
6.0.0 | Параметр use_include_path заменен на flags. |
5.1.0 | Добавлены параметры offset и maxlen. |
5.0.0 | Добавлена поддержка контекста (context). |
Примечания
СоветПримечание: Эта функция может безопасно обрабатывать бинарные данные.
Имя файла может быть задано в виде URL только в том случае, если была включена настройка PHP fopen wrappers. Смотрите документацию к функции fopen(), чтобы узнать как задать имя файла. Для получения подробной информации об обертках (wrapper) смотрите List of Supported Protocols/Wrappers.
ПредупреждениеПри использовании SSL, web-сервер Microsoft IIS нарушает протокол, закрывая соединение без отправки уведомления close_notify. Когда Вы дойдете до конца файла, PHP сообщит об этом как о ошибке "SSL: Fatal Protocol Error". Чтобы справиться с этой ошибкой, надо понизить значение параметра error_reporting до такого уровня, при котором не выводятся предупреждения. Если Вы открываете поток, используя https://, начиная с версии 4.3.7 PHP определит, что на сервере используется проблемный web-сервер IIS и не выведет предупреждение. Если для создания ssl:// сокета Вы используете функцию fsockopen(), то Вы сами должны примять меры для обработки этой ошибки.
Петрелевич Сергей
petrelevich@yandex.ru
www.SmartyIT.ru
Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.
bambr | Mar 27, 2019 2:52:41 PM | |
Все получается, но не могу разобраться, как настроить переход по внутренним ссылкам на сайте $homepage = str_replace('http://site.ru','http://site.ru' , $homepage ); в браузере адрес меняется, а на сайте всегда одна главная показывается. | ||