Lire et écrire dans un fichier – partie 1
Pour lire et écrire dans un fichier, il y a plusieurs méthodes. Ces méthodes auront bientôt plus de secrets pour vous.
Ecrire dans un fichier
Pour écrire dans un fichier rien de mieux que la fonction file_put_contents() ce qui évite d’utiliser les fonctions fopen(), fwrite() et fclose().
La fonction file_put_contents() prend deux paramètres, le chemin vers le fichier et le texte à écrire:
<?php file_put_contents('test.txt', "Texte sur la première ligne\nTexte sur la seconde ligne du fichier"); ?>
Ce qui donne:
Texte sur la première ligne
Texte sur la seconde ligne du fichier
Pour écrire sur plusieurs lignes, il faut ajouter des \n a la fin, autrement le texte sera ajouté sur la même ligne.
Exemple:
<?php file_put_contents('test.txt', 'Texte sur la première ligne\nTexte sur la seconde ligne du fichier'); ?>
Ce qui donne:
Texte sur la première ligne\nTexte sur la seconde ligne du fichier
Pour écrire dans un fichier tout en conservant les données, il y a plusieurs techniques. On peux décider d’écrire soit a la fin du fichier ou au début.
Voila un code qui permet de récupérer le contenu du fichier et d’y écrire au début:
<?php // Nom du fichier $filename = 'test.txt'; // La ligne a rajouter au fichier $texte = date("Y-m-d H:i:s")."\n"; // On rajoute le contenu du fichier $texte .= file_get_contents($filename); // On écrit le résultat dans le fichier file_put_contents($filename, $texte); // ---------- ---------- ---------- ---------- ---------- // On écrit a la fin du fichier: // Nom du fichier $filename = 'test.txt'; // On ouvre le fichier pour récupérer son contenu $texte = file_get_contents($filename); // La ligne a rajouter au fichier $texte .= date("Y-m-d H:i:s")."\n"; // On écrit le résultat dans le fichier file_put_contents($filename, $texte); ?>
Comment fonctionne les deux exemples précédants ? Pour l’exemple 1, on veut écrire au début. On met donc ce qu’on veut écrire dans une variable. Ensuite on rajoute a cette variable le contenue du fichier qu’on va récupérer grace a la fonction file_get_contents(). Pour lier les deux on utilise .=, pour écrire a la fin on fait tout simplement l’inverse, mais on peut aussi utiliser cette technique:
<?php // On écrit au début du fichier: // Nom du fichier $filename = "test.txt"; // Texte à écrire $texte = date("Y-m-d H:i:s")."\n".file_get_contents($filename); // On écrit le résultat dans le fichier file_put_contents($filename, $texte); // ---------- ---------- ---------- ---------- ---------- // On écrit a la fin du fichier: // Nom du fichier $filename = "test.txt"; // Texte à écrire $texte = file_get_contents($filename)."\n".date("Y-m-d H:i:s"); // On écrit le résultat dans le fichier file_put_contents($filename, $texte); ?>
Lire un fichier
On peut utiliser file() ou file_get_contents() pour les plus simple.
La fonction file() va retourner le fichier sous forme d’array.
La fonction file_get_contents() quand t’a elle va retourner le fichier sous forme de chaine
Exemple d’utilisation de la fonction file():
<?php // Nom du fichier $filename = 'test.txt'; $fichier = file($filename); // On ouvre le fichier echo $fichier[0]; // On affiche la ligne 1 echo $fichier[1]; // On affiche la ligne 2 // On peut aussi afficher le fichier en entier grace a une boucle: foreach ($fichier as $key => $value) { echo $value."<br>\"; } ?>
Exemple d’utilisation de la fonction file_get_contents():
<?php // Nom du fichier $filename = 'test.txt'; $fichier = file_get_contents($filename); // On ouvre le fichier echo nl2br($fichier); // nl2br remplace les sauts de lignes par des <br> ?>
On peut aussi choisir ce qu’on veut afficher avec file_get_contens():
<?php // On affiche 8 caractères à partir du 31 echo $section = file_get_contents('./test.txt', NULL, NULL, 31, 8); ?>
La fonction permet aussi de récupérer le contenu d’une page web:
<?php $homepage = file_get_contents('http://www.google.fr'); echo $homepage; // On affiche la page ?>
Les fichiers ont maintenant plus de secret pour vous.
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.