(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Читає вміст файла в рядку
$filename
,$use_include_path
= false,$context
= ?,$offset
= -1,$maxlen
= ?
Ця функція є подібною до функціїfile(), за виключенням
того, що file_get_contents() повертає вміст файлу
рядком (string), починаючи від зазначеного зміщення
(offset
), обмежуючись параметром максимальної довжини
(maxlen
) в байтах. При невдачі,
file_get_contents() повертає false
.
file_get_contents() є кращим варіантом для читання вмісту файла в рядку. Вона буде використовувати технологію співставлення в пам'яті, якщо це підтримується вашою ОС для збільшення продуктивності.
Зауваження:
Якщо ви відкриваєте URI, що мають спец-символи, такі як пробіли, вам потрібно закодовувати URI за допомогою urlencode().
filename
Назва файлу, який буде читатись.
use_include_path
Зауваження:
Починаючи з PHP 5 може використовуватись константа
FILE_USE_INCLUDE_PATH
для ініціювання пошуку в підключеному розташуванні (include path).
context
Коректний ресурс контекста, створений за допомогою функції
stream_context_create(). Якщо вам не потрібно
використовувати користувальницький контекст, ви можете пропустити цей
параметр передавши в нього значення null
.
offset
Зміщення, з якого починається читання в наданому потоці.
Пошук зміщення (offset
) не підтримується для
віддалених файлів. Зміщення на віддалених файлах може працювати з
невеликими зміщеннями, але це є непередбачуваним, оскільки
в такому разі використовується буферизація потоку.
maxlen
Максимальна довжина даних для читання. Початково, відбувається читання допоки не досягнуто кінця файлу. Майте на увазі, що цей параметр застосовується при обробці потоку через фільтри.
Функція повертає прочитані дані або false
в разі помилки.
Ця функція може
повертати як логічне false
, так і не логічне значення, яке прирівнюється до
false
. Докладніше про це описано в розділі Логічні типи даних. Для перевірки
значення, яке повертає ця функція, використовується оператор ===.
Буде згенеровано помилку рівня E_WARNING
,
якщо файл (filename
) не знайдено,
максимальна довжина (maxlength
) менша за нуль,
або якщо відбулась невдала спроба зазначеного зміщення
(offset
) в потоці.
Приклад #1 Отримання та вивід сирців домашньої сторінки веб-сайта
<?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);
?>
Версія | Опис |
---|---|
5.1.0 |
Додано параметри offset та
maxlen .
|
Зауваження: Ця функція є бінарно безпечною.
URL як назву файлу можна використовувати з цією функцією, якщо ввімкнені обгортки fopen. Докладніше про те, як вказати назву файлу: fopen(). На сторінці Підтримувані протоколи та обгортки є посилання на інформацію про можливості різних обгорток, примітки щодо їхнього використання, інформацію про будь-які попередньо визначені цими обгортками змінні.
Якщо використовувати SSL,
Microsoft IIS порушуватиме протокол, закриваючи зʼєднання без надсилання
індикатора close_notify
. Коли буде досягнуто кінця даних, PHP
повідомлятиме: "SSL: Fatal Protocol Error". Щоб обійти це, значення error_reporting має бути знижене до рівня,
який не включає попереджень. PHP може виявити несправне програмне забезпечення
сервера IIS та приховати попередження, якщо відкривати потік за допомогою
обгортки https://
. Якщо розробник використовує
fsockopen() для створення сокета ssl://
,
то він сам має виявляти та приховувати це попередження.