Écrire et lire simplement dans un fichier

PHP propose plusieurs manières de lire et d'écrire dans un fichier.

Lire 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');
}

Et pour l'écriture ?

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).

Cet article t'a plu ? Si oui, je te propose de t'inscrire à ma dev letter pour recevoir régulièrement dans ta boîte mail mes conseils, mes nouveaux articles, des vidéos à voir, des outils à découvrir et encore bien d’autres choses.

Je m'inscris