Écrire et lire simplement dans un fichier
PHP propose plusieurs manières de lire et d'écrire dans un fichier.
La manière la plus standard de stocker dans une variable de type string
le contenu d'un fichier est (code repris de php.net) :
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
Mais il existe une fonction qui permet de récupérer plus simplement dans une chaîne de caractère ce même contenu :
$filename = "/usr/local/something.txt";
$contents = file_get_contents($filename);
Par contre, attention, si une erreur survient à la lecture du fichier, file_get_contents
va retourner false
. Afin de s'assurer de la bonne exécution, il faut donc vérifier le retour de la méthode avec === false
:
$filename = "/usr/local/something.txt";
$contents = file_get_contents($filename);
if ($contents === false) {
throw new Exception('Erreur à la lecture du fichier');
}
Il existe une fonction similaire pour écrire facilement une chaîne de caractère dans un fichier : file_put_contents
:
$filename = "/usr/local/something.txt";
$status = file_put_contents($filename, 'Ma chaîne de caractères');
if ($status === false) {
throw new Exception("Erreur à l'écriture du fichier");
}
Ici, le fichier /usr/local/something.txt
va être créé et va contenir Ma chaîne de caractères
. Par défaut, cette méthode écrase le fichier s'il existe déjà. Si on veut rajouter la chaîne à la fin d'un fichier existant, il faut passer le flag FILE_APPEND
:
$status = file_put_contents($filename, 'Ma chaîne de caractère', FILE_APPEND);
À savoir aussi que file_put_contents
peut prendre un tableau à une dimension à la place de la chaîne de caractères. Il va automatiquement concatener les valeurs.
$filename = "/usr/local/something.txt";
$data = ['Element 1', 'Element 2', 'Element 3'];
$status = file_put_contents($filename, $data);
Le fichier contiendra Element 1Element 2Element 3
(je ne vois pas trop dans quel cas ça peut être pratique, mais bon, ça a le mérite d'exister).
Mon programme "S'entraîner pour progresser en PHP" est disponible. Il vous permettra de recevoir chaque semaine un kata de code directement dans votre boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives et des défis supplémentaires.