Lire dans un fichier texte
Dans la leçon précédente, nous avons vu comment accéder au système de fichiers du serveur. Dans cette leçon, nous mettrons à profit cette connaissance pour lire un fichier texte ordinaire.
Les fichiers texte se révèlent extrêmement utile pour stocker divers types de données. Bien que leur emploi ne soit pas aussi souple que celui d'une véritable base de données, les fichiers texte nécessitent en général moins de mémoire. En outre, le fichier texte est un format ordinaire simple qui fonctionne sur la plupart des systèmes.
Ouvrir le fichier texte
Pour ouvrir un fichier texte, nous utilisons la fonction fopen. La syntaxe est la suivante :
fopen(nom_du_fichier, mode)
- nom_du_fichier
- Nom du fichier à ouvrir.
- mode
- Le mode peut se régler sur "r" (lecture), "w" (écriture) or "a" (ajout à la fin). Dans cette leçon, nous ne ferons que lire un fichier et utiliserons donc "r". Dans la leçon suivante, nous apprendrons à écrire et à ajouter du texte à la fin du fichier.
- Les exemples de cette leçon font intervenir le fichier texte unitednations.txt. C'est une simple liste des programmes et fonds des Nations Unies et leurs domaines. Vous pouvez soit télécharger le fichier, soit créer votre propre fichier et tester les exemples avec.
Ouvrons d'abord le fichier unitednations.txt :
<?php
// Open the text file
$f = fopen("unitednations.txt", "r");
// Close the text file
fclose($f);
?>
Exemple : Lire une ligne du fichier texte
À l'aide de la fonction fgets, nous pouvons lire une ligne du fichier texte. Cette méthode effectue une lecture jusqu'au premier saut de ligne (celui-ci exclus).<html>
<head>
<title>Reading from text files</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
// Read line from the text file and write the contents to the client
echo fgets($f);
fclose($f);
?>
</body>
</html>
Exemple 2 : Lire toutes les lignes du fichier texte
<html>
<head>
<title>Reading from text files</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
// Read line by line until end of file
while(!feof($f)) {
echo fgets($f) . "<br />";
}
fclose($f);
?>
</body>
</html>
Plutôt que de faire une itération dans toutes les lignes, nous aurions obtenu le même résultat avec la fonction fread. Si vous travaillez avec de très grands fichiers texte, sachez que la fonction fread consomme beaucoup plus de ressources que la fonction fgets. Pour des petits fichiers, ça ne fait pas grande différence.
Exemple 3 : Un annuaire de liens simple
Comme mentionné au début de cette leçon, les fichiers texte peuvent parfaitement convenir pour le stockage de données. Cela sera illustré dans le prochain exemple dans lequel nous créons un annuaire de liens simple à partir du contenu du fichier texte unitednations.txt.Le fichier est systématiquement écrit avec le nom du programme, puis une virgule et enfin le domaine. Comme vous pouvez vous en douter, il aurait été facile de stocker plus d'informations dans ce fichier de données séparées par des virgules.
Pour récupérer l'information dans chaque ligne, nous utilisons un tableau. Voir la leçon 8 pour plus de renseignements sur les tableaux.
<html>
<head>
<title>Reading from text files</title>
</head>
<body>
<?php
$f = fopen("unitednations.txt", "r");
// Read line by line until end of file
while (!feof($f)) {
// Make an array using comma as delimiter
$arrM = explode(",",fgets($f));
// Write links (get the data in the array)
echo "<li><a href='http://" . $arrM[1] . "'>" . $arrM[0]. "</a></li>";
}
fclose($f);
?>
</body>
</html>
Dans la leçon suivante, nous verrons comment écrire dans un fichier texte.
Aucun commentaire: