Manipuler des fichiers en PHP
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Le type d'accès au fichier en PHP
- 4- Lecture de fichiers en Php
- 4.1- Lecture de fichiers locaux
- 4.2- Utiliser la fonction
file_get_contents()
- 4.3- Utiliser la fonction
file()
- 4.4- Utiliser la fonction
fread()
- 4.5- Syntaxe
- 4.6- Valeurs des paramètres
- 4.7- Exemple
- 4.8- Lecture de fichiers distants
- 4.9- Utiliser la fonction
file_get_contents()
oufile()
- 4.10- Utiliser la fonction
fgets()
- 5- Écriture de fichiers
- 5.1- Utiliser la fonction
file_put_contents()
- 5.2- Syntaxe
- 5.3- Valeurs des paramètres
- 5.4- Utiliser la fonction
fwrite()
- 5.4.1- Cours PHP
Manipuler des fichiers en PHP
-
Objectifs
- Utiliser php pour lire et écrire dans les fichiers locaux et à distants
-
Présentation
- L’API de manipulation de fichiers de PHP est extrêmement flexible : elle vous permet de lire des fichiers dans une chaîne ou dans un tableau, à partir du système de fichiers local ou d’une URL distante, par lignes, octets ou caractères.
-
Le type d’accès au fichier en PHP
-
Lecture de fichiers en Php
-
Lecture de fichiers locaux
-
Utiliser la fonction
file_get_contents()
- Le moyen le plus simple de lire le contenu d’un fichier disque en PHP est d’utiliser fonction
file_get_contents()
. - Cette fonction accepte le nom et le chemin d’accès à un fichier disque et lit le fichier entier dans une variable de chaîne d’un seul coup. Voici un exemple :
-
Utiliser la fonction
file()
- Une autre méthode de lecture des données d’un fichier est la fonction
file()
de PHP, qui accepte le nom et le chemin d’accès à un fichier et lit le fichier entier dans un tableau, avec chaque élément du tableau représentant une ligne du fichier. - Pour traiter le fichier, il vous suffit d’itérer sur le tableau à l’aide d’une boucle foreach.
- Voici un exemple, qui lit un fichier dans un tableau, puis l’affiche à l’aide d’une telle boucle :
-
Utiliser la fonction
fread()
- Le fonction
fread()
lit à partir d’un fichier ouvert. - La fonction s’arrêtera à la fin du fichier ou lorsqu’il atteint la longueur spécifiée, selon la première éventualité.
-
Syntaxe
fread(file, length)
-
Valeurs des paramètres
-
Exemple
-
Lecture de fichiers distants
-
Utiliser la fonction
file_get_contents()
oufile()
- Les deux fonctions vues précédemment
file_get_contents()
etfile()
, prennent également en charge la lecture de données à partir d’URL, en utilisant soit le protocole HTTP ou FTP. - Voici un exemple, qui lit un fichier HTML sur le Web dans un tableau :
<?php // read file into array $arr = file('http://www.google.com') or die('ERROR: Cannot find file'); foreach ($arr as $line) { echo $line; } ?>
-
Utiliser la fonction
fgets()
- En cas de liaisons réseau lentes, il est parfois plus efficace de lire un fichier distant dans « morceaux » pour maximiser l’efficacité de la bande passante réseau disponible.
- Pour ce faire, utilisez le
fgets()
pour lire un nombre spécifique d’octets à partir d’un fichier. - La fonction
fgets()
renvoie une ligne d’un fichier ouvert. - Exemple
- Description
- Cette exemple introduit quatre nouvelles fonctions, alors examinons-la de plus près.
- Premièrement les
fonction fopen()
: elle accepte le nom du fichier source et un argument indiquant si le fichier doit être ouvert en lecture (‘r
‘), en écriture (‘w
‘) ou en ajout (‘a
‘), puis crée un pointeur vers le fichier. - Ensuite, une boucle while appelle la fonction
fgets()
en boucle pour lire un nombre spécifique d’octets du fichier et ajoute les octets à une variable de chaîne ; cette boucle continue jusqu’à ce que la fonction feof() renvoie true, indiquant que la fin du fichier est atteinte. - Une fois la boucle terminée, la fonction fclose() détruit le pointeur de fichier.
- Afin de lire les URL distantes, la variable de configuration PHP ‘
allow_url_fopen
‘ doit être défini sur true dans le fichier de configuration PHP php.ini. - Si cette variable est définie sur false, tous les tentatives de lecture de fichiers distants échoueront.
-
Écriture de fichiers
-
Utiliser la fonction
file_put_contents()
- La fonction
file_put_contents()
, est un proche cousin de la fonction file_get_contents() que vous avez lu dans le section précédente : cette fonction accepte un nom de fichier et un chemin, ainsi que les données à écrit dans le fichier, puis écrit ce dernier dans le premier. -
Syntaxe
file_put_contents(filename, data, mode, context)
-
Valeurs des paramètres
- FILE_USE_INCLUDE_PATH – rechercher le nom de fichier dans le répertoire d’inclusion
- FILE_APPEND – si le fichier existe déjà, ajoutez-y les données – au lieu de l’écraser
- LOCK_EX – Mettre un verrou exclusif sur le fichier lors de l’écriture de celui-ci
-
Utiliser la fonction
fwrite()
- Une autre façon d’écrire des données dans un fichier est de créer un pointeur de fichier avec fopen(), et puis écrivez les données dans le pointeur à l’aide de la fonction PHP
fwrite()
. - Un nouveau fichier peut être écrit ou du texte peut être ajouté à un fichier existant à l’aide de la fonction PHP
fwrite()
. - Cette fonction requiert deux arguments spécifiant un pointeur de fichier et la chaîne de données à écrire. En option, un troisième argument entier peut être inclus pour spécifier la longueur des données à écrire. Si le troisième argument est inclus, l’écriture s’arrêtera une fois la longueur spécifiée atteinte.
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, le PHP tente de le créer. |
a+ | Ouvre un fichier en lecture et en écriture en conservant les données existantes. Si le fichier n’existe pas, le PHP tente de le créer. |
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à. |
c | Ouvre un fichier pour écriture seulement. Si le fichier n’existe pas, il sera crée. Si il existe, les informations seront conservées. |
c+ | Ouvre un fichier pour lecture et écriture. Si le fichier n’existe pas, il sera crée. Si il existe, les informations seront conservées. |
e | Le mode e est particulier et n’est pas toujours disponible. Nous n’en parlerons pas ici. |
<?php
// read file into string
$str = file_get_contents('example.txt') or die('ERROR: Cannot find file');
echo $str;
?>
<?php
// read file into array
$arr = file('example.txt') or die('ERROR: Cannot find file');
foreach ($arr as $line) {
echo $line;
}
?>
Parameter | Description |
---|---|
file | Obligatoire. Spécifie le fichier ouvert à lire | length | Obligatoire. Spécifie le nombre maximum d’octets à lire |
<?php
$file = fopen("test.txt","r");
echo fread($file,filesize("test.txt"));
fclose($file);
?>
<?php
// Lire le fichier dans un tableau (morceaux)
$str = '';$fp = fopen('http://www.apcpedagogie.com', 'r') or die('ERROR: Ne peut pas ouvrir le fichier');
while (!feof($fp)) {
$str .= fgets($fp,512);
}
fclose($fp);
echo $str;
?>
Paramètre | Description |
---|---|
filename | Obligatoire. Spécifie le chemin d’accès au fichier dans lequel écrire. Si le fichier n’existe pas, cette fonction en créera un |
data | Obligatoire. Les données à écrire dans le fichier. Peut être une chaîne, un tableau ou un flux de données |
mode | Optionnel. Spécifie comment ouvrir/écrire dans le fichier. Valeurs possibles:
|
context | Optional. Specifies the context of the file handle. Context is a set of options that can modify the behavior of a stream. |
<?php
$newfile = fopen("textfile.txt", "w");
$str = "random text";
fwrite($newfile, $str);
fclose($newfile);
?>