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 на js, python, mysqlfile get contents изменения phpпримеры расширенные
Функция 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