Lire et écrire dans un fichier en PHP
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à lire et écrire de façon simple dans un fichier avec des fonctions natives à PHP. Nous essaierons en effet de stocker des variables dans un fichier texte puis de lire ce même fichier.
II. Écrire dans un fichier
Pour écrire dans un fichier en PHP, on utilisera les commandes "fopen()" et "fwrite()" qui sont présentes nativement dans PHP. On écrira donc un script en ".php" comme suivant :
<?php # Chemin vers fichier texte $file ="file/file.txt"; # Ouverture en mode écriture $fileopen=(fopen("$file",'a')); # Ecriture de "Début du fichier" dansle fichier texte fwrite($fileopen,"Début du fichier"); # On ferme le fichier proprement fclose($fileopen); ?>
Nous commençons donc pour plus de simplicité par indiquer dans une variable "$file" le chemin vers le fichier dans lequel nous voulons écrire avec la fonction "fopen()". On doit aussi indiquer avec quel mode nous souhaitons l'ouvrir, en écriture, en lecture .. Voici une liste des différents modes utiles qu'il est possible d'utiliser :
- r : Ouverture en lecture seule, le pointeur sera au début
- r+: Ouverture en lecture et écriture, le pointeur sera au début
- w : Ouverture en écriture seule, crée le fichier ou le vide avant écriture, pointeur au début
- w+: Ouverture en rw, crée le fichier ou le vide avant écriture, pointeur au début
- a : Ouverture en écriture seule, crée le fichier si n'existe pas, pointeur à la fin si existe
- a+: Ouverture en lecture et écriture, crée le fichier si n'existe pas, pointeur à la fin (écrit à la suite du fichier)
- x : Ouverture en lecture seule, crée le fichier et ne fonctionne pas si le fichier existe déjà.
- x+: Ouverture en lecture et écriture, crée le fichier et ne fonctionne pas si le fichier existe déjà.
- c : Ouverture en écriture seule, crée le fichier si il n'existe pas, ne vide pas le fichier comme w, pointeur au début (écrit par au dessus de ce qui existe déja)
- c+: Ouverture en lecture et écriture, pareil que pour c
On continu le script en écrivant dans la ressource ouverte avec la fonction "fwrite()" où on indique le fichier ouvert avec "fopen()" et ensuite ce que l'on veut écrire dedans. On pourrais aussi indiquer dans ce deuxième paramètre une ou plusieurs variables contenant des données que nous voudrions écrire dans le fichier.
III. Lire dans le fichier texte
Nous allons maintenant vouloir lire le contenu de notre fichier texte. On peut pour cela le lire en entier en une seul fois avec la fonction"readfile()" ou alors le lire ligne par ligne avec "file()".
A. Lecture ligne par ligne
On peut vouloir lire notre fichier ligne par ligne pour traiter et analyser les lignes unes par unes. On utilisera alors un script ressemblant à cela :
<?php # Chemin vers fichier texte $file ="file/file.txt"; # On met dans la variable (tableau $read) le contenu du fichier $read=file($file); #On affiche ensuite le fichier ligne par ligne (pour un fichier de deux lignes) echo $read[0]; echo $read[1]; ?>
Il est d'ailleurs plus pratique dans ce cas là d'écrire une boucle qui afficherais toutes les lignes du fichier pour plus de flexibilité.
B. Lecture complète
On peut également vouloir afficher le fichier totalement en une seule fois, auquel cas on utilisera la fonction "readfile()";
<?php # Chemin vers fichier texte $file ="file/file.txt"; # Affichage du fichier texte au complet readfile($file); ?>
Le contenu du fichier s'affichera alors dans notre terminal.
bonsoirs cher Mickael,
moi j ai 7 fichiers a lire son contenu .verifier le contenu de chaque s’il existe un mot , le mot FAILDED ou SUCCEED envoyer un message .
le script doit etre en php .
svp aidez moi.
je peut etre contacter par email.
en complément du tuto, je voudrais partager une trouvaille pour les fichiers texte de grande taille. En effet, pour des fichiers de plusieurs Giga, la fonction readfile() risque d’exploser la ram.
Une solution est de construire un fichier index et de lire le gros fichier ligne par ligne.
Quelques explications sur cette technique se trouve ici:
http://www.fobec.com/php5/1181/lire-une-ligne-dans-fichier-texte.html
Depuis une amélioration a été apportée, l’écriture du fichier index en mode binaire et l’utilisation d’integer écrit sur 4 bytes.
Bonjour , dans le 1er bloc de code de la page on peut voir :
« $fileopen=(fopen(« $file »,’a’));
……….
fclose($fileopen); »
la derniere ligne ne devrait pas etre plutot : » fclose (« $file »); «