Главная / Веб-программирование / Веб-программирование PHP: знакомимся с функцией file_get_contents()

Веб-программирование 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: enrn" .
"Cookie: visitor=EGFE129Frn"
)
);

$context = stream_context_create($opts);
$file = file_get_contents(‘http://www.example.com/’, false, $context);
?>

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

  • В функции 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);

  • Можно использовать поточный контекст для установки правильного тайм-аута, не связываясь со значениями php.ini:
  • <?php
    $ctx = stream_context_create(array(
    ‘http’ => array(
    ‘timeout’ => 1
    ))
    );

    file_get_contents("http://example.com/", 0, $ctx);
    ?>

  • В некоторых случаях использования функции 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));
    }
    ?>

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

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

    О нас seoexpert

    продвижение сайта,seo оптимизация,поисковое продвижение,раскрутка сайтов,поисковая оптимизация,продвижение сайта в гугл,seo раскрутка,продвижение сайтов в яндексе,продвижение сайта в google,продвижение сайтов в топ 10,Оптимизация и продвижение сайтов,услуги продвижения сайта,заказать продвижение,продвижение сайтов в топ,сео раскрутка сайта

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

    Определение типа данных double в C, C++ и C#

    Double – 64-разрядная переменная с плавающей запятой Тип double — это основной тип данных, который ...