File get contents: примеры (PHP)

Использование file_get_contents: чтение данных в PHP
Раздел: Работа с файлами
file_get_contents(string $filename, bool $use_include_path = false, ?resource $context = null, int $offset = 0, ?int $length = null): string|false

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

Аргументы функции
  • filename (обязательный) - путь к файлу или URL для чтения.
  • use_include_path (необязательный, по умолчанию false) - если true, функция ищет файл также в include_path.
  • context (необязательный) - ресурс контекста, созданный функцией stream_context_create().
  • offset (необязательный, по умолчанию 0) - смещение, с которого начинается чтение файла.
  • length (необязательный, по умолчанию null) - максимальный размер читаемых данных. Если null, читается до конца файла.
Базовые примеры
Чтение локального файла
<?php
$content = file_get_contents('data.txt');
echo $content;
?>
Содержимое файла data.txt
Чтение удаленного URL
<?php
$html = file_get_contents('https://example.com');
echo substr($html, 0, 100) . '...';
?>
<!doctype html><html><head><title>Example Domain...</title></head>...
Чтение с offset и length
<?php
$part = file_get_contents('large_file.bin', false, null, 10, 5);
echo bin2hex($part);
?>
48656c6c6f
Похожие функции PHP
  • file() - читает файл в массив строк. Удобна для построчной обработки.
  • fread() - чтение файла по частям с помощью файлового указателя. Подходит для больших файлов.
  • readfile() - выводит содержимое файла напрямую в буфер вывода без загрузки в память скрипта.
  • fopen() с stream_get_contents() - позволяет более гибко управлять потоком чтения.
  • Для HTTP-запросов часто предпочтительнее использовать cURL или Guzzle, так как они предоставляют больше опций.
Аналоги в других языках

File get contents в Python

with open('data.txt', 'r') as file:
    content = file.read()
print(content)

import requests
html = requests.get('https://example.com').text
Содержимое файла data.txt
<!doctype html>... (HTML страницы)
JavaScript (Node.js)
const fs = require('fs');
fs.readFile('data.txt', 'utf8', (err, data) => {
    console.log(data);
});

// Fetch API в браузере или Node.js (с поддержкой)
fetch('https://example.com')
    .then(response => response.text())
    .then(html => console.log(html));
Содержимое файла data.txt
<!doctype html>... (HTML страницы)

File get contents в MySQL

SELECT LOAD_FILE('/var/lib/mysql/data.txt');
Содержимое файла data.txt

Ключевые отличия от PHP: в Python и JS часто используются асинхронные методы, а в MySQL функция работает только с файлами на сервере БД.

Типичные ошибки
Отсутствие файла или неверные права
<?php
$content = @file_get_contents('non_existent.txt');
if ($content === false) {
    echo "Ошибка чтения файла";
}
?>
Ошибка чтения файла
Чтение удаленного URL без allow_url_fopen
<?php
// Если в php.ini allow_url_fopen = Off
$html = file_get_contents('https://example.com');
var_dump($html);
?>
bool(false)
Превышение лимита памяти для большого файла
<?php
// Чтение файла размером 2ГБ при memory_limit = 128M
$content = file_get_contents('huge_file.iso');
?>
Fatal error: Allowed memory size exhausted
Изменения в новых версиях PHP
  • В PHP 8.0 параметр $length может принимать значение null, что означает чтение до конца файла. Ранее требовалось явно указывать 0 или опускать.
  • Начиная с PHP 7.1, для параметра $offset можно использовать отрицательные значения, чтобы отсчитывать смещение от конца файла.
  • В PHP 8.1 добавлена возможность передачи массива опций контекста вместо ресурса в некоторых случаях, но для file_get_contents() по-прежнему требуется ресурс контекста.
Расширенные примеры
Чтение с использованием контекста HTTP
Пример php
<?php
$opts = [
    'http' => [
        'method' => 'GET',
        'header' => "User-Agent: MyCustomAgent\r\n"
    ]
];
$context = stream_context_create($opts);
$html = file_get_contents('https://example.com', false, $context);
echo substr($html, 0, 150);
?>
<!doctype html><html><head><title>Example Domain...</title></head><body><div><h1>Example...</h1>
Чтение JSON файла и декодирование
Пример php
<?php
$json_data = file_get_contents('config.json');
$config = json_decode($json_data, true);
print_r($config);
?>
Array
(
    [site_name] => "Мой сайт"
    [version] => 2.5
)
Чтение данных из stdin
Пример php
<?php
// php script.php < input.txt
$input = file_get_contents('php://stdin');
echo "Получено: " . strlen($input) . " байт";
?>
Получено: 24 байта
Одновременное чтение нескольких файлов
Пример php
<?php
$files = ['file1.txt', 'file2.txt'];
$contents = [];
foreach ($files as $file) {
    $contents[$file] = file_get_contents($file);
}
print_r($contents);
?>
Array
(
    [file1.txt] => Первый файл
    [file2.txt] => Второй файл
)

PHP file_get_contents function comments

En
File get contents Reads entire file into a string