(PHP 4, PHP 5, PHP 7)
fwrite — Escritura de un archivo en modo binario seguro
$handle
, string $string
[, int $length
] )
fwrite() escribe el contenido de
string
al flujo de archivo apuntado por
handle
.
handle
Resource que apunta a un fichero del sitema que normalmente es creado usando fopen().
string
La cadena que va a ser escrita.
length
Si se da el argumento length
, la escritura
se detendrá después de que length
bytes hayan sido escritos o
se alcance el final de string
, lo que suceda
primero.
Observe que si el argumento length
se da,
la opción de configuración magic_quotes_runtime
será ignorada y no se eliminarán las barras de string
.
fwrite() devuelve el número de bytes
escritos, o FALSE
si se produjo un error.
Nota:
Escribir en un flujo de red puede terminar antes de que se haya escrito la cadena completa. El valor devuelto por fwrite() se puede verificar:
<?php
function flujo_fwrite($fp, $cadena) {
for ($escrito = 0; $escrito < strlen($cadena); $escrito += $fwrite) {
$fwrite = fwrite($fp, substr($cadena, $escrito));
if ($fwrite === false) {
return $escrito;
}
}
return $escrito;
}
?>
Nota:
En sistemas en los que se diferencia entre archivos binarios y de texto (esto es, Windows) el archivo debe ser abierto con 'b' incluida en el parámetro modo de fopen().
Nota:
Si
handle
fue abierto por fopen() en modo de adición, las escrituras de fwrite() son atómicas (a menos que el tamaño destring
exceda el tamaño de bloque del sistema de archivos, en algunas plataformas, siempre que el archivo esté en un sistema de archivos local). Es decir, no hay necesidad de bloquear un recurso con flock() antes de llamar a fwrite(); toda la información será escrita sin interrupciones.
Nota:
Si se escribe dos veces sobre el puntero al archivo la información será añadida al final del contenido del archivo:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// ¡el contenido de 'data.txt' ahora es 123 y no 23!
?>
Ejemplo #1 Un ejemplo sencillo de fwrite()
<?php
$nombre_archivo = 'prueba.txt';
$contenido = "Añade esto al archivo\n";
// Primero vamos a asegurarnos de que el archivo existe y es escribible.
if (is_writable($nombre_archivo)) {
// En nuestro ejemplo estamos abriendo $nombre_archivo en modo de adición.
// El puntero al archivo está al final del archivo
// donde irá $contenido cuando usemos fwrite() sobre él.
if (!$gestor = fopen($nombre_archivo, 'a')) {
echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}
// Escribir $contenido a nuestro archivo abierto.
if (fwrite($gestor, $contenido) === FALSE) {
echo "No se puede escribir en el archivo ($nombre_archivo)";
exit;
}
echo "Éxito, se escribió ($contenido) en el archivo ($nombre_archivo)";
fclose($gestor);
} else {
echo "El archivo $nombre_archivo no es escribible";
}
?>