(PHP 4, PHP 5, PHP 7, PHP 8)
fread — Читает файл в бинарно-безопасном режиме: как последовательность байтов
Функция fread() считывает заданное параметром
length
количество байтов из файлового указателя,
на который ссылается поток stream
. Чтение останавливается, как только
выполнилось одно из следующих условий:
length
Функция возвращает прочитанную строку или false
, если возникла ошибка.
Пример #1 Простой пример использования функции fread()
<?php
// Получаем содержимое файла в строку
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
Пример #2 Пример побайтового чтения функцией fread()
В системах, которые различают двоичные и текстовые файлы (например, ОС Windows), файл требуется открывать с включением флага «b» в параметр mode функции fopen().
<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>
Пример #3 Примеры удалённого чтения функцией fread()
При чтении не из обычного локального файла, а, например, из потоков, которые возвращаются при чтении удалённых файлов или функциями popen() и fsockopen(), чтение остановится после получения функцией доступа к пакету. То есть данные лучше собирать порциями, как показывают примеры в следующих параграфах.
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle = fopen("http://www.example.com/", "rb");
if (FALSE === $handle) {
exit("Не удалось открыть поток по url адресу");
}
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
?>
Замечание:
Когда требуется просто получить содержимое файла в виде строки, вызывают функцию file_get_contents(), поскольку её производительность выше, чем у кода в приведённых примерах.
Замечание:
Обратите внимание, функция fread() считывает данные с текущей позиции указателя файла. Пользуйтесь функцией ftell(), чтобы найти текущую позицию указателя и функцией rewind(), чтобы перемотать позицию указателя в начало.