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():

<?php

echo 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: en
" .
              "Cookie: visitor=EGFE129F
"
  )
);

$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/xml
".
                           "Authorization: Basic ".base64_encode("$https_user:$https_password")."
",
        "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. Приведенная ниже функция решает эту проблему:
<?php
function 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 – первая локация, в которой должен осуществляться поиск. Но я несколько раз бывал в ситуации, когда директория, содержащая включение файла, оказывалась первой в порядке поиска.

Перевод статьи “PHP file_get_contents() Function” был подготовлен дружной командой проекта Сайтостроение от А до Я.

PHP  |  26.11.2017  | 

PHP, Интернет-технологии, похожие статьи

Функция PHP mkdir() применяется для создания каталога, заданного в pathname. Каталог создается со значением режима доступа по умолчанию 0777.
PHP  |  15.12.2017
Все мы знаем функцию printf() PHP и ее семейство. Эти функции полезны, но иногда они не обеспечивают достаточной функциональности. Кроме этого, добавление форматирующих строк в printf() не безопасно.
PHP  |  15.12.2017
Реализовать отправку почты PHP довольно просто. Можно даже указать в скрипте, какой использовать сервер SMTP для отправки, локальный или удалённый.
PHP  |  14.12.2017
Применение
PHP  |  08.12.2017




Яндекс цитирования