Чтение файла. 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

Метки: PHP   Web   HTTP  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.

bambr Mar 27, 2019 2:52:41 PM
Все получается, но не могу разобраться, как настроить переход по внутренним ссылкам на сайте $homepage = str_replace('http://site.ru','http://site.ru' , $homepage ); в браузере адрес меняется, а на сайте всегда одна главная показывается.
 
Яндекс цитирования Ðåéòèíã@Mail.ru Rambler's Top100