Lire et écrire dans un fichier en PHP

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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 523.Voir tous les posts

3 thoughts on “Lire et écrire dans un fichier en PHP

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

    Répondre
  • 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.

    Répondre
  • 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 »); « 

    Répondre

Répondre à iznobe Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.