(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Записывает данные в файл бинарно-безопасным способом
Функция fwrite() записывает содержимое data
в файловый поток stream
.
stream
Ресурс (resource) указателя файловой системы, который часто создают функцией fopen().
data
Строка, которую нужно записать.
length
Функция остановит запись через length
байтов, если значение length
— целое число (int), или когда достигнет конца строки data
, в зависимости от того, что произойдёт раньше.
Функция fwrite() возвращает количество записанных байтов или false
, если возникла ошибка.
Функция fwrite() выдаёт ошибку уровня E_WARNING
в случае ошибки.
Версия | Описание |
---|---|
8.0.0 | Параметр length теперь принимает значение null . |
Пример #1 Простой пример использования функции fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";
// Вначале убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
// В примере мы открываем $filename в режиме «записи в конец».
Замечание:
Запись в сетевой поток может прекратиться до завершения записи строки. Значение, которое возвращает функция fwrite(), можно проверить:
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $written;
}
}
return $written;
}
?>
Замечание:
В системах, которые различают двоичные и текстовые файлы (например, операционные системы Windows), файл должен быть открыт с флагом «b» в конце аргумента mode функции fopen().
Замечание:
Если функция fopen() открыла дескриптор
stream
в режиме «добавление в конец», вызовы функции fwrite() будут атомарными (если размерdata
не превышает размер блока файловой системы, на некоторых платформах, и пока файл хранится в локальной файловой системе). То есть не нужно блокировать ресурс функцией flock() перед вызовом функции fwrite(); данные будут записаны без прерываний.
Замечание:
При повторной записи в файловый указатель, данные будут добавлены в конец файла:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// Теперь файл 'data.txt' содержит 123, а не 23!
?>