English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, vous apprendrez à utiliser les fonctions système de fichiers PHP pour créer dynamiquement, accéder (ou lire) et manipuler des fichiers.
Comme PHP est un langage de programmation serveur, il vous permet d'utiliser les fichiers et les dossiers stockés sur le serveur Web. Dans ce tutoriel, vous apprendrez à utiliser les fonctions système de fichiers PHP pour créer, accéder et manipuler des fichiers sur le serveur Web.
Pour utiliser un fichier, il est d'abord nécessaire de l'ouvrir. La fonction fopen() de PHP est utilisée pour ouvrir des fichiers. La syntaxe de base de cette fonction peut être présentée de la manière suivante :
fopen(filename, mode)
Le premier paramètre passé à fopen() spécifie le nom du fichier à ouvrir, le deuxième paramètre spécifie le mode d'ouverture du fichier. Par exemple :
<?php $handle = fopen("data.txt", "r"); ?>Testez pour voir‹/›
Vous pouvez ouvrir un fichier de la manière suivante :
Mode | Qu'est-ce qu'il peut faire |
---|---|
r | Ouvrir un fichier en lecture seule. |
r+ | Ouvrir un fichier pour lecture-écriture. |
w | Ouvrir un fichier uniquement pour écrire et effacer le contenu du fichier. Si le fichier n'existe pas, PHP essaie de le créer. |
w+ | Ouvrir un fichier pour lecture-écriture et effacer le contenu du fichier. Si le fichier n'existe pas, PHP essaie de le créer. |
a | Ajouter. Ouvrir un fichier uniquement pour écrire. En écrivant à la fin du fichier, vous conservez le contenu du fichier. Si le fichier n'existe pas, PHP essaie de le créer. |
a+ | Lecture/Ajouter. Ouvrir un fichier pour lecture-écriture. En écrivant à la fin du fichier, vous conservez le contenu du fichier. Si le fichier n'existe pas, PHP essaie de le créer. |
x | Ouvrir un fichier uniquement pour écrire. Si le fichier existe, il renvoie False et génère une erreur. Si le fichier n'existe pas, PHP essaie de le créer. |
x+ | Ouvrir un fichier pour lecture-écriture ; sinon, son comportement est le même que pour "x". |
Si vous essayez d'ouvrir un fichier inexistant, PHP génère un message d'avertissement. Par conséquent, pour éviter ces messages d'erreur, vous devriez utiliser la fonction PHP file_exists() pour effectuer un simple contrôle avant d'accéder à un fichier ou un répertoire.
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ // Essayez d'ouvrir ce fichier $handle = fopen($file, "r"); } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
Astuce :Les opérations sur les fichiers et les dossiers sont sujettes à des erreurs. Par conséquent, il est une bonne habitude d'implémenter une forme de vérification des erreurs, de sorte que votre script puisse gérer les erreurs de manière élégante en cas de problème. Veuillez consulter les informationsGestion des erreurs PHPtutoriel.
Après avoir utilisé le fichier, vous devez le fermer. La fonction fclose() est utilisée pour fermer un fichier, comme dans l'exemple suivant :
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Ouvrir le fichier à lire $handle = fopen($file, "r") or die("ERROR: Impossible d'ouvrir le fichier."); /* Voici un exemple de code à exécuter */ //Fermeture du descripteur de fichier fclose($handle); } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
Attention :Bien que PHP ferme automatiquement tous les fichiers ouverts à la fin du script, il est préférable de fermer les fichiers après toutes les opérations.
Maintenant que vous savez comment ouvrir et fermer un fichier, dans la section suivante, vous apprendrez à lire des données à partir d'un fichier. PHP offre plusieurs fonctions pour lire des données à partir d'un fichier. Vous pouvez lire tout le fichier en une seule opération.
La fonction fread() peut être utilisée pour lire un nombre spécifique de caractères à partir d'un fichier. Vous pouvez utiliser cette fonction avec la syntaxe de base suivante.
fread(file handle, length in bytes)
Cette fonction accepte deux paramètres-Le descripteur de fichier et le nombre d'octets à lire. L'exemple suivant lit à partir du fichier "data.txt".20 octets, y compris les espaces. Supposons que le fichier "data.txt" contienne un texte "The quick brown fox jumps over the lazy dog.".
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Ouvrir le fichier à lire $handle = fopen($file, "r") or die("ERROR: Impossible d'ouvrir le fichier."); //Lire un nombre fixe d'octets à partir du fichier $content = fread($handle, "20); //Fermer le descripteur de fichier fclose($handle); //Afficher le contenu du fichier echo $content; } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
L'exemple ci-dessus produira le suivant :
The quick brown fox
La fonction fread() peut être combinée avec la fonction filesize() pour lire tout le fichier en une seule fois. La fonction filesize() a pour rôle : retourner la taille du fichier en octets.
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Ouvrir le fichier à lire $handle = fopen($file, "r") or die("ERROR: Impossible d'ouvrir le fichier."); //Lecture de tout le fichier $content = fread($handle, filesize($file)); //Fermeture du descripteur de fichier fclose($handle); //Afficher le contenu du fichier echo $content; } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
L'exemple ci-dessus produira le suivant :
The quick brown fox jumps over the lazy dog.
La manière la plus simple de lire tout le contenu d'un fichier en PHP est d'utiliser la fonction readfile(). Cette fonction vous permet de lire le contenu du fichier sans avoir à l'ouvrir. Le suivant exemple produira le même résultat que celui ci-dessus :
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Lire et afficher tout le fichier readfile($file) or die("ERROR: Impossible d'ouvrir le fichier."); } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
L'exemple ci-dessus produira le suivant :
The quick brown fox jumps over the lazy dog.
Une autre méthode pour lire tout le contenu d'un fichier sans l'ouvrir est l'utilisation de la fonction file_get_contents(). Cette fonction accepte le nom et le chemin du fichier et lit tout le contenu du fichier dans une variable de chaîne. Voici un exemple :
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ // Lire tout le fichier en tant que chaîne $content = file_get_contents($file) or die("ERROR: Impossible d'ouvrir le fichier."); //Afficher le contenu du fichier echo $content; } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
Une autre méthode pour lire tout le contenu d'un fichier en PHP est la fonction file(). Elle fonctionne de la même manière que la fonction file_get_content(), mais elle retourne le contenu du fichier sous forme d'un tableau d'éléments de ligne, plutôt qu'en tant que chaîne de caractères unique. Chaque élément du tableau correspond à une ligne du fichier.
Pour traiter les données de fichier, vous devez utiliserBoucle foreachParcourir un tableau. Voici un exemple où le fichier est lu dans un tableau et affiché avec une boucle :
<?php $file = "data.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Lire tout le fichier dans un tableau $arr = file($file) or die("ERROR: Impossible d'ouvrir le fichier."); foreach($arr as $line){ echo $line; } } else { echo "ERROR: Le fichier n'existe pas."; } ?>Testez pour voir‹/›
De même, vous pouvez utiliser la fonction fwrite() de PHP pour écrire des données dans un fichier ou les ajouter à un fichier existant. La syntaxe de base de cette fonction peut être donnée de la manière suivante :
fwrite(descripteur_de_fichier, chaîne)
La fonction fwrite() accepte deux paramètres - le descripteur de fichier et la chaîne de données à écrire, comme dans les exemples suivants :
<?php $file = "note.txt"; //La chaîne de caractères de données à écrire $data = "The quick brown fox jumps over the lazy dog."; //Ouvrir le fichier pour l'écriture $handle = fopen($file, "w") or die("ERROR: Impossible d'ouvrir le fichier."); //Écrire des données dans le fichier fwrite($handle, $data) or die("ERROR: Impossible d'écrire dans le fichier."); //Fermer le descripteur de fichier fclose($handle); echo "Les données ont été écrites avec succès dans le fichier."; ?>
Dans l'exemple ci-dessus, si le fichier "note.txt" n'existe pas, PHP le créera automatiquement et écrira les données. Cependant, si le fichier "note.txt" existe déjà, PHP effacera le contenu du fichier (si celui-ci existe) avant d'écrire les nouvelles données. Cependant, si vous ne souhaitez pas effacer le contenu existant et只想 ajouter des données, utilisez l'exemple suivant :Mode a au lieu de w.
Une autre méthode consiste à utiliser la fonction file_put_contents(). C'est une fonction correspondante à file_get_contents(), qui fournit un moyen simple d'écrire des données dans un fichier sans ouvrir celui-ci. La fonction accepte le nom et le chemin du fichier ainsi que les données à écrire. Voici un exemple :
<?php $file = "note.txt"; //La chaîne de caractères de données à écrire $data = "The quick brown fox jumps over the lazy dog."; //Écrire des données dans le fichier file_put_contents($file, $data) or die("ERROR: Impossible d'écrire dans le fichier."); echo "Les données ont été écrites avec succès dans le fichier."; ?>
Si le fichier spécifié pour la fonction file_put_contents() existe déjà, PHP le couvrira par défaut. Pour conserver le contenu du fichier, vous pouvez passer le marqueur spécial FILE_APPEND en tant que troisième paramètre à la fonction file_put_contents(). Il ajoutera simplement les nouvelles données au fichier sans le couvrir. Voici un exemple :
<?php $file = "note.txt"; //La chaîne de caractères de données à écrire $data = "The quick brown fox jumps over the lazy dog."; //Écrire des données dans le fichier file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file."); echo "Les données ont été écrites avec succès dans le fichier."; ?>
Vous pouvez utiliser la fonction rename() de PHP pour renommer un fichier ou un répertoire, comme suit :
<?php $file = "file.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Tenter de renommer le fichier if(rename($file, "newfile.txt")){ echo "Le renommage du fichier a réussi."; } else { echo "Erreur : impossible de renommer le fichier."; } } else { echo "Erreur : le fichier n'existe pas."; } ?>
Vous pouvez utiliser la fonction unlink() de PHP pour supprimer un fichier ou un répertoire, comme suit :
<?php $file = "note.txt"; //Vérifier si le fichier existe if(file_exists($file)){ //Tenter de supprimer ce fichier if(unlink($file)){ echo "Le fichier a été supprimé avec succès."; } else { echo "Erreur : impossible de supprimer le fichier."; } } else { echo "Erreur : le fichier n'existe pas."; } ?>
Dans le prochain chapitre, nous allons apprendre à propos deAnalyser le répertoire ou le dossier dePlus d'informations.
Le tableau suivant résume d'autres fonctions utiles du système de fichiers PHP, qui peuvent être utilisées pour lire et écrire des fichiers dynamiquement.
Fonction | Description |
---|---|
fgetc() | Lire un caractère à la fois. |
fgets() | Lire une ligne à la fois. |
fgetcsv() | Lire une ligne de valeurs séparées par des virgules. |
filetype() | Retourner le type de fichier. |
feof() | Vérifier si on est arrivé à la fin du fichier. |
is_file() | Vérifier si le fichier est un fichier standard. |
is_dir() | Vérifier si le fichier est un répertoire. |
is_executable() | Vérifier si le fichier est exécutable. |
realpath() | Retourner le nom de chemin absolu normalisé. |
rmdir() | Supprimer un répertoire vide. |
Veuillez consulter la référence du système de fichiers PHP pour obtenir d'autres fonctions utiles du système de fichiers PHP.