(PHP 4, PHP 5, PHP 7, PHP 8)
fwrite — Binary-safe file write
fwrite() writes the contents of
data
to the file stream pointed to by
stream
.
fwrite() returns the number of bytes
written, or false
on failure.
fwrite() raises E_WARNING
on failure.
Version | Description |
---|---|
8.0.0 |
length is nullable now.
|
Example #1 A simple fwrite() example
<?php$filename = 'test.txt';$somecontent = "Add this to the file\n";// Let's make sure the file exists and is writable first.if (is_writable($filename)) { // In our example we're opening $filename in append mode. // The file pointer is at the bottom of the file hence // that's where $somecontent will go when we fwrite() it. if (!$fp = fopen($filename, 'a')) { echo "Cannot open file ($filename)"; exit; } // Write $somecontent to our opened file. if (fwrite($fp, $somecontent) === FALSE) { echo "Cannot write to file ($filename)"; exit; } echo "Success, wrote ($somecontent) to file ($filename)"; fclose($fp);} else { echo "The file $filename is not writable";}?>
Note:
Writing to a network stream may end before the whole string is written. Return value of fwrite() may be checked:
<?phpfunction 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;}?>
Note:
On systems which differentiate between binary and text files (i.e. Windows) the file must be opened with 'b' included in fopen() mode parameter.
Note:
If
stream
was fopen()ed in append mode, fwrite()s are atomic (unless the size ofdata
exceeds the filesystem's block size, on some platforms, and as long as the file is on a local filesystem). That is, there is no need to flock() a resource before calling fwrite(); all of the data will be written without interruption.
Note:
If writing twice to the file pointer, then the data will be appended to the end of the file content:
<?php$fp = fopen('data.txt', 'w');fwrite($fp, '1');fwrite($fp, '23');fclose($fp);// the content of 'data.txt' is now 123 and not 23!?>