echo file get contents

Функция PHP file get ontents() используется для считывания файла в строку. Если применять ее для дистанционного считывания, не забудьте, что любой URL-адрес со специальными символами должен быть правильно закодирован при помощи urlencode() .

Пример использования file_get_contents() :

Возвращаемое значение

Функция возвращает считанные данные или вернет FALSE при ошибке.

Дополнительная информация

file_get_contents() должна стать приоритетной функцией для считывания содержимого файла в строку. Она задействует метод отображения файла в память .

Одно из основных отличий между функциями file() и file_get_contents() заключается в том, что последняя считывает содержимое в строку, начиная с указанного параметра offset , и до maxlen . А file() считывает содержимое в массив.

Версии и история изменений в PHP

Функция file get contents PHP работает с PHP 4 >= 4.3.0, PHP 5, PHP 7 .

Параметр offset появился в PHP 5.1 .
Параметр maxlen также появился в PHP 5.1 .

Связанные функции

Вам также следует знать о следующих PHP-функциях :

file() — считывает весь файл в массив;
fgets() — считывает строку из указанного файла;
fread() — производит бинарно-безопасное чтение файла;
readfile() — выводит файл;
file_put_contents() — записывает строку в файл;
stream_get_contents() — считывает остаток потока в строку;
stream_context_create() — создаёт контекст потока.

Параметры

Параметр filename функции PHP file get contents используется для указания имени файла. Это обязательный параметр.

Параметр use_include_path используется для указания, может ли константа FILE_USE_INCLUDE_PATH ( из файла php.ini ) использоваться для запуска поиска include path . Это необязательный параметр.

Параметр context используется для указания контекста, созданного функцией stream_context_create() . Если не нужен произвольный контекст, можно опустить этот параметр при помощи NULL . Это необязательный параметр.

Параметр offset используется для указания смещения, с которого в исходном потоке начинается считывание. Отрицательное значение offset позволяет начинать смещение с конца потока. Это необязательный параметр.

Не забудьте, что поиск ( offset ) не поддерживается при дистанционной работе с файлами. В редких случаях при работе с нелокальными файлами могут сработать небольшие смещения, но в этом случае результат работы непредсказуем, так как работа производится в потоке в буфере.

Параметр maxlen используется для указания максимальной длины данных, которые необходимо считать. По умолчанию считывание производится до конца файла. Это необязательный параметр.

Наглядные примеры

file get contents PHP пример использования :

Приведённый выше код позволяет получить и вывести исходный код страницы указанного сайта. В следующем примере показано, как считать фрагмент данных файла:

В следующем примере показано, как использовать контекст потока для дистанционного открытия файла:

Дополнительные советы

  1. В функции file get contents используется POST . Для этого сначала нужно создать контекст:
  1. Можно использовать поточный контекст для установки правильного тайм-аута, не связываясь со значениями php.ini :
  1. В некоторых случаях использования функции PHP file get contents http возникает проблема с кодировкой UTF-8 при считывании URL-адреса с кодировкой отличной от UTF-8 . Это происходит потому, что по умолчанию используется UTF-8 . Приведенная ниже функция решает эту проблему:
  1. Кажется, file ищет файл внутри текущей директории, перед тем как обратиться к include path , даже если установлен флаг FILE_USE_INCLUDE_PATH .

Вроде бы сказано, что include_path – первая локация, в которой должен осуществляться поиск. Но я несколько раз бывал в ситуации, когда директория, содержащая включение файла, оказывалась первой в порядке поиска.

Данная публикация представляет собой перевод статьи « PHP file_get_contents() Function » , подготовленной дружной командой проекта Интернет-технологии.ру

Which is faster in PHP:

$file = file_get_contents(‘http://example.com/file.txt’); echo $file;

I am using server side includes ( require(‘/var/www/menu.php’); ) for my menus etc but want to use this for certain things (eg on other domains)

5 Answers 5

If you use this method hugely on everypage for very large files, then you would waste memory space by extra variables. so the better approach would be:

It would be a better question to ask which function is faster file_get_contents() or fread()? Then the answer was if file is more than 1MB or 2MB then use file_get_contents() which can perform better.
You can see a benchmark here:

Large file was 2.3MB and the small one was about 3.0KB.
I ran both functions against small files 100,000 times and ran it again on large file just once.

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents — Читает содержимое файла в строку

Описание

Данная функция похожа на функцию file() с той только разницей, что file_get_contents() возвращает содержимое файла в строке, начиная с указанного смещения offset и до maxlen байт. В случае неудачи, file_get_contents() вернёт FALSE .

Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует технику отображения файла в память (memory mapping), если она поддерживается вашей операционной системой.

Если вы открываете URI содержащий спецсимволы, такие как пробел, вам нужно закодировать URI при помощи urlencode() .

Список параметров

Имя читаемого файла.

Начиная с версии PHP 5 можно использовать константу FILE_USE_INCLUDE_PATH для поиска файла в include path.

Корректный ресурс контекста, созданный с помощью функции stream_context_create() . Если в использовании особого контекста нет необходимости, можно пропустить этот параметр передав в него значение NULL .

Смещение, с которого начнется чтение оригинального потока.

Поиск смещения ( offset ) не поддерживается при работе с удаленными файлами. Попытка поиска смещения на нелокальных файлах может работать при небольших смещениях, но этот результат является непредсказуемым, так как он работает на буферизованном потоке.

Максимальный размер читаемых данных. По умолчанию чтение осуществляется пока не будет достигнут конец файла. Учтите, что этот параметр применяется и к потоку с фильтрами.

Возвращаемые значения

Функция возвращает прочтенные данные или FALSE в случае возникновения ошибки.

Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.

Ошибки

Будет сгенерирована ошибка уровня E_WARNING , если параметр filename не удается найти, параметр maxlength меньше нуля или поиск по смещению offset в потоке завершается неудачно.

Примеры

Пример #1 Получить и вывести исходный код домашней страницы вебсайта

Пример #2 Поиск файлов в include_path

Пример #3 Чтение секции файла

Результатом выполнения данного примера будет что-то подобное:

Пример #4 Использование потоковых контекстов

// Создаем поток
$opts = array(
‘http’ =>array(
‘method’ => «GET» ,
‘header’ => «Accept-language: en
» .
«Cookie: foo=bar
»
)
);

$context = stream_context_create ( $opts );

// Открываем файл с помощью установленных выше HTTP-заголовков
$file = file_get_contents ( ‘http://www.example.com/’ , false , $context );
?>

Список изменений

Версия Описание
5.1.0 Добавлены аргументы offset и maxlen .

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen() . Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).

При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как «SSL: Fatal Protocol Error» в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS при открытии потока с помощью обертки https:// и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.

Смотрите также

  • file() — Читает содержимое файла и помещает его в массив
  • fgets() — Читает строку из файла
  • fread() — Бинарно-безопасное чтение файла
  • readfile() — Выводит файл
  • file_put_contents() — Пишет строку в файл
  • stream_get_contents() — Читает оставшуюся часть потока в строку
  • stream_context_create() — Создаёт контекст потока
  • $http_response_header
Оцените статью