(PHP 4, PHP 5, PHP 7)
fwrite — Écrit un fichier en mode binaire
$handle
, string $string
[, int $length
] )
fwrite() écrit le contenu de la chaîne
string
dans le fichier pointé par
handle
.
handle
Un pointeur de système de fichiers de type resource qui est habituellement créé en utilisant la fonction fopen().
string
La chaîne à écrire.
length
Si la longueur length
est fournie, l'écriture s'arrêtera après
length
octets, ou à la fin de la
chaîne (le premier des deux).
Notez que si length
est fourni, alors l'option de
configuration
magic_quotes_runtime
sera ignorée, et les slash seront conservés.
fwrite() retourne le nombre d'octets écrits, ou
FALSE
si une erreur survient.
Note:
Le fait d'écrire dans un flux peut se terminer avant que la chaîne complète ne soit écrite. La valeur retournée par la fonction fwrite() peut être vérifiée comme ceci :
<?php
function fwrite_stream($fp, $string) {
for ($written = 0; $written < strlen($string); $written += $fwrite) {
$fwrite = fwrite($fp, substr($string, $written));
if ($fwrite === false) {
return $fwrite;
}
}
return $written;
}
?>
Note:
Sur les systèmes qui font la différence entre les fichiers binaires et les fichiers textes (par exemple, Windows), le fichier doit être ouvert avec l'option 'b' inclus dans le paramètre de mode de fopen().
Note:
Si
handle
est ouvert en mode ajout (append), fwrite() sera atomique (sauf si la taille destring
excède la taille du bloc du système de fichiers, sur quelques plates-formes, et tant que le fichier se trouve sur le système de fichiers local). Ainsi, il n'est pas nécessaire d'utiliser la fonction flock() sur une ressource avant d'appeler la fonction fwrite() ; toutes les données seront écrites sans interruption.
Note:
Si l'on écrit 2 fois dans le fichier, les données seront ajoutées à la fin du fichier ; cela signifie que l'exemple suivant ne donnera pas le résultat attendu :
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// le contenu de 'data.txt' est maintenant 123 et non 23 !
?>
Exemple #1 Exemple avec fwrite()
<?php
$filename = 'test.txt';
$somecontent = "Ajout de chaîne dans le fichier\n";
// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
// Le pointeur de fichier est placé à la fin du fichier
// c'est là que $somecontent sera placé
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons quelque chose dans notre fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
?>