Apprendre à coder sur pierre-giraud.com

DES COURS COMPLETS ET GRATUITS POUR TOUS

OUVRIR, LIRE, FERMER UN FICHIER EN PHP

Manipuler des fichiers en PHP

Jusqu’à présent, nous ne savions stocker des informations que de manière temporaire grâce aux variables.

L’utilisation de fichiers en PHP va nous permettre de stocker de façon définitive des informations.

Les fichiers vont donc nous offrir une alternative aux bases de données que nous étudierons dans la suite de ce cours et qui servent également à stocker des informations de manière organisée et définitive.

Sachez cependant que nous préférerons généralement les bases de données à l’utilisation de fichiers car ces premières sont de manière générale plus robustes. Néanmoins, il reste important de savoir effectuer des opérations sur les fichiers en PHP.

Le PHP nous fournit différentes fonctions qui vont nous permettre de créer, lire, éditer, fermer ou encore écrire dans des fichiers. Nous allons étudier chacune d'entre elles dans les chapitres suivants.

Ouvrir un fichier en PHP

Pour ouvrir un fichier en PHP, nous allons utiliser la fonction fopen(), abréviation de « file open » ou « ouvrir un fichier » en français.

On va devoir passer le chemin relatif menant à notre fichier ainsi qu’un « mode » d’ouverture pour notre fichier en arguments à cette fonction.

Généralement, nous travaillerons sur des fichiers texte, c’est-à-dire des fichiers possédant l’extension .txt.

Je vous invite donc déjà à créer un premier fichier .txt (avec votre éditeur de texte par exemple) et à l’enregistrer dans le même dossier que votre fichier PHP.

Personnellement, j’utiliserai un fichier que j’ai appelé exemple.txt et qui contient le texte suivant :

Création d’un fichier texte

Nous avons le choix entre huit modes d’ouverture différents pour ouvrir notre fichier :

Mode d’ouverture Description
r Ouvre un fichier en lecture seule. Il est impossible de modifier le fichier.
r+ Ouvre un fichier en lecture et en écriture.
a Ouvre un fichier en écriture seule en conservant les données existantes. Si le fichier n’existe pas, crée un fichier.
a+ Ouvre un fichier en lecture et en écriture en conservant les données existantes. Si le fichier n’existe pas, crée un fichier.
w Ouvre un fichier en écriture seule. Si le fichier existe, les informations existantes seront supprimées. S’il n’existe pas, crée un fichier.
w+ Ouvre un fichier en lecture et en écriture. Si le fichier existe, les informations existantes seront supprimées. S’il n’existe pas, crée un fichier.
x Crée un nouveau fichier accessible en écriture seulement. Retourne false et une erreur si le fichier existe déjà.
x+ Crée un nouveau fichier accessible en lecture et en écriture. Retourne false et une erreur si le fichier existe déjà.

Comme vous pouvez le constater, le choix du mode influe fortement sur les opérations que nous allons pouvoir réaliser sur le fichier en question.

Par exemple lorsqu’on ouvre un fichier en lecture seulement toute modification de ce fichier est impossible, ce qui n'est pas le cas si on choisit un mode permettant l'écriture dans ce fichier.

Lire un fichier en PHP

Pour lire un fichier en PHP, nous allons cette fois-ci utiliser la fonction fread(), abréviation de « file read » ou « lire le fichier » en français.

Cette fonction va prendre en arguments le résultat renvoyé par fopen() et le nombre de Bytes maximum qui doivent être lus.

Une astuce ici : pour être sûr de toujours lire l’entièreté de notre fichier, nous pouvons utiliser la fonction filesize() qui va justement renvoyer la taille d’un fichier. En lui passant notre fichier en argument, filesize() va donc renvoyer exactement sa taille qu’on va pouvoir passer à fread() (en supposant bien entendu qu'on commence à lire le fichier à partir du début).

Fermer un fichier

Pour fermer un fichier en PHP, nous utiliserons cette fois la fonction fclose().

On va une nouvelle fois passer le résultat renvoyé par fopen() en argument de cette fonction.

Notez que la fermeture d’un fichier n’est pas strictement obligatoire. Cependant, cela est considéré comme une bonne pratique : cela évite d’user inutilement les ressources de votre serveur.

Ouverture, lecture et fermeture d’un fichier

Maintenant que nous savons comment ouvrir, lire et fermer un fichier, nous allons pouvoir voir en pratique comment cela fonctionne.

Pour cela, nous allons travailler avec notre fichier exemple.txt et tenter de l'ouvrir avec différents modes.

Commençons déjà avec le mode r, qui nous permet d’ouvrir un fichier spécifiquement pour la lecture de celui-ci.

Ouverture et lecture d’un fichier en PHP avec le mode r

Notre fichier est bien lu en PHP

Dans ce premier exemple, nous commençons par ouvrir notre fichier grâce à fopen() en utilisant le mode r.

Nous stockons ensuite le résultat renvoyé par la fonction fopen() dans une variable. Ce résultat correspond à notre fichier ouvert selon le mode choisi.

Une fois le fichier ouvert, nous tentons de l’afficher. Pour cela, nous utilisons la fonction fread().

Nous passons en arguments de fread() le résultat renvoyé par fopen() ainsi que le nombre de Bytes maximum qui doivent être lus dans notre fichier.

Ici, nous utilisons l’astuce que je vous ai décrite précédemment : on exécute filesize() sur notre fichier en soi afin d’obtenir sa taille exacte et de la passer immédiatement à fread.

Ainsi, on demande finalement à fread() de lire notre fichier complètement.

Nous utilisons également l’élément HTML pre pour conserver la mise en page d’origine de notre fichier.

Enfin, une fois notre fichier lu, nous fermons celui-ci car nous n’en avons plus besoin.

Essayons maintenant d’ouvrir et de lire notre fichier en utilisant le mode a.

Tentative de lecture d’un fichier en PHP en utilisant le mode a

Notre ficiher ne peut pas être lu car nous avons précisé le mauvais mode en PHP

Ici, on constate que notre fichier n’est pas lu. Ceci est tout à fait normal, puisqu’en ouvrant notre fichier avec le mode a, seule l’écriture dans le fichier est permise.

Le fichier ne peut donc pas être lu.

Tentons une troisième chose : ouvrons notre fichier en utilisant le mode w et tentons de le lire.

Ou ouvre un fichier en PHP en utilisant le mode w

Avec le mode w, un fichier ne peut pas être lu en PHP

Là encore, le fichier n’est pas lu ce qui est normal puisque le mode w est utilisé pour ouvrir des fichiers en écriture seulement.

Cependant, si vous retournez sur votre fichier, vous pouvez constater que son contenu a également été effacé !

Lorsqu’on ouvre un fichier en PHP en utilisant le mode w, son contenu est effacé

En effet, rappelez vous qu'en ouvrant un fichier avec le mode w, celui-ci va supprimer le contenu existant du fichier.

Chapitre précédent

Chapitre suivant