PHP: знакомимся с функцией file_get_contents()

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

Синтаксис:

string file_get_contents( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = 0 [, int $maxlen ]]]])

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

<?phpecho file_get_contents("names.txt");?>

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

Функцию возвращает считанные данные или вернет 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

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

use_include_path

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

context

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

offset

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

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

maxlen

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

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

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

<?php$homepage = file_get_contents('http://www.example.com/');echo $homepage;?>

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

<?php// Считывание четырнадцати символов, начиная с 21-го.$section = file_get_contents('story.txt', NULL, NULL, 20, 14);var_dump($section);?>

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

<?php$opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Accept-language: enrn". "Cookie: visitor=EGFE129Frn"));$context = stream_context_create($opts);$file = file_get_contents('http://www.example.com/', false, $context);?>

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

  1. В возможности file get contents используется POST. Для этого сначала необходимо создать контекст:
$opts = array('http' => array(   'method'  => 'POST',        'header'  => "Content-Type: text/xmlrn".                           "Authorization: Basic ".base64_encode("$https_user:$https_password")."rn",        'content' => $body,        'timeout' => 60));$context  = stream_context_create($opts);$url = 'https://'.$https_server;$result = file_get_contents($url, false, $context, -1, 40000);
  1. Можно легко использовать поточный контекст для установки правильного тайм-аута, не связываясь со значениями php.ini:
<?php$ctx = stream_context_create(array(    'http' => array(        'timeout' => 1 )));file_get_contents("http://example.com/", 0, $ctx);?>
  1. В некоторых случаях использования возможности PHP file get contents http возникает проблема с кодировкой UTF-8 при считывании URL-адреса с кодировкой отличной от UTF-8 . Это происходит потому, что по умолчанию используется UTF-8 . Приведенная ниже функцию решает эту проблему:
<?phpfunction file_get_contents_utf8($fn) {    $content = file_get_contents($fn);    return mb_convert_encoding($content, 'UTF-8',      mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));}?>
  1. Кажется, file ищет файл внутри текущей директории, перед тем как обратиться к include path , даже если установлен флаг FILE_USE_INCLUDE_PATH .

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *