fwrite
(PHP 4, PHP 5, PHP 7)
fwrite — Бинарно-безопасная запись в файл
Описание
$handle
, string $string
, int $length
= ?
) : int
fwrite() записывает содержимое string
в файловый поток handle
.
Список параметров
-
handle
-
Указатель (resource) на файл, обычно создаваемый с помощью функции fopen().
-
string
-
Записываемая строка.
-
length
-
Если передан аргумент
length
, запись остановится после того, какlength
байтов будут записаны или будет достигнут конец строкиstring
, смотря что произойдёт раньше.Учтите, что если указан аргумент
length
, то директива magic_quotes_runtime будет проигнорирована, и строкаstring
не будет очищена от слешей.
Возвращаемые значения
fwrite() возвращает количество записанных байт
или false
в случае ошибки.
Примечания
Замечание:
Запись в сетевой поток может прекратиться до того, как будут записаны все данные. Это можно контролировать с помощью проверки возвращаемого значения функции 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().
Замечание:
Если дескриптор
handle
был открыт функцией fopen() в режиме "добавление в конец", то вызовы fwrite() будут атомарными (за исключением случая, если размерstring
превысит размер блока файловой системы, на некоторых платформах, и пока файл хранится на локальной файловой системе). То есть нет необходимости блокировать ресурс с помощью flock() перед вызовом fwrite(), и все данные будут записаны без прерываний.
Замечание:
При повторной записи в файловый указатель, данные будут добавлены в конец содержимого файла:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// содержимое 'data.txt' теперь 123, а не 23!
?>
Примеры
Пример #1 Простой пример использования fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";
// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {
// В нашем примере мы открываем $filename в режиме "записи в конец".
// Таким образом, смещение установлено в конец файла и
// наш $somecontent допишется в конец при использовании fwrite().
if (!$handle = fopen($filename, 'a')) {
echo "Не могу открыть файл ($filename)";
exit;
}
// Записываем $somecontent в наш открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Не могу произвести запись в файл ($filename)";
exit;
}
echo "Ура! Записали ($somecontent) в файл ($filename)";
fclose($handle);
} else {
echo "Файл $filename недоступен для записи";
}
?>
Смотрите также
- fread() - Бинарно-безопасное чтение файла
- fopen() - Открывает файл или URL
- fsockopen() - Открывает соединение с интернет-сокетом или доменным сокетом Unix
- popen() - Открывает файловый указатель процесса
- file_get_contents() - Читает содержимое файла в строку
- pack() - Упаковать данные в бинарную строку