M2202 - Algorithmique et PHP

Transcription

M2202 - Algorithmique et PHP
M2202 - Algorithmique et PHP
David Annebicque
2016
1
TD : Manipulation de fichiers
1.1
Introduction
Ce TD/TP s’intéresse à la manipulation de fichier. Nous nous focaliserons
sur la manipulation de fichiers texte (txt) standard et des fichiers csv qui
pourront par exemple être exploité dans un tableur de type excel.
Pour pouvoir manipuler les fichiers, vous devez vous assurer de mettre les
droits en écriture et execution sur votre répertoire.
1.2
Fichier texte
La manipulation d’un fichier comporte trois étapes :
1. Ouvrir le fichier (s’il existe)
2. Exploiter le fichier (lecture et/ou écriture)
3. Fermer le fichier
Ce qui se traduit pour les étapes 1 et 2 par le code ci-dessous:
1
2
3
<?php
// 1 : on ouvre le fichier
$monfichier = fopen('fichier.txt', 'r+');
4
5
// 2 : on fera ici nos opérations sur le fichier...
6
7
8
9
// 3 : quand on a fini de l'utiliser, on ferme le fichier
fclose($monfichier);
?>
1
Table 1 – My caption
Mode Explications
Ouvre le fichier en lecture seule. Cela signifie que vous pourrez,
r
seulement lire le fichier.
Ouvre le fichier en lecture et écriture. Vous pourrez non,seulement lire
r+
le fichier, mais aussi y écrire (on l’utilisera, assez souvent en pratique).
Ouvre le fichier en écriture seule. Mais il y a un avantage : si le fichier
a
n’existe pas, il est automatiquement créé.
Ouvre le fichier en lecture et écriture. Si le fichiers n’existe pas, il est
créé automatiquement. Attention : le répertoire doit avoir un CHMOD
a+
à 777 dans ce cas ! À noter que si le fichier existe déjà, le texte sera
rajouté à la fin.
Si votre fichier.txt se trouve dans un répertoire, vous devez modifier la
ligne 3 avec le bon chemin. Vous n’êtes absolument pas obligés de donner
l’extension .txt à votre fichier. Vous pouvez l’appeler comme vous voulez :
exemple.cpt, exemple.num, ou même exemple tout court. En pratique vous
pouvez écrire n’importe quelle extension, mais pour pouvoir l’ouvrir par la
suite il faut soit que l’extension n’existe pas (dans ce cas on ouvrir le fichier
avec un éditeur de texte), où alors que l’extension soit en fait un fichier txt
(par exemple le html, un fichier ini ou encore du csv...).
Le second argument de la fonction fopen indique de quelle manière il faut
ouvrir le fichier. Le tableau ci-dessous vous présente les différents mode dans
lequel un fichier peut être ouvert.
Pour lire un fichier, il existe deux méthodes : soit ligne par ligne (fgets),
soit caractère par caractère (fgetc).
1.2.1
1
2
Lire
<?php
$ligne = fgets($monfichier);
L’instruction ci-dessus permet donc de lire la première ligne de votre
fichier (et uniquement celle-là). Pour parcourir tout le fichier, il faut faire
une boucle qui va parcourir l’ensemble des lignes.
1
2
3
<?php
// 1 : on ouvre le fichier
$monfichier = fopen('fichier.txt', 'r+');
2
4
5
6
7
8
9
10
11
12
13
// 2 : on fera ici nos opérations sur le fichier...
while(!feof($monfichier))
{
$ligne = fgets($monfichier);
//on fait quelque chose avec ligne
}
// 3 : quand on a fini de l'utiliser, on ferme le fichier
fclose($monfichier);
?>
Dans le code ci-dessus, la boucle while regarde si on est à la fin du fichier
(feof permet de détecter la fin du fichier). La ligne fgets, va automatiquement
lire les ligne de manière successive à chaque itération de la boucle. Un peu
comme le fetch dans la base de données du TD3.
1.2.2
Écrire
Pour écrire il n’existe qu’une méthode : fputs.
1
2
<?php
fputs($monfichier,"le texte à écrire");
L’ajout se fait là ou se trouve le curseur : en fin de ligne si on à lu une
ligne, après une caractère, si on a fait un fgetc.
Pour repositionner le curseur, on peut utiliser :
1
2
<?php
fseek($monfichier,0);
Qui va replacer le curseur au caractère 0, c’est à dire au début du fichier.
1.3
1.3.1
fichier CSV
Lire
La manipulation d’un fichier csv est très similaire à u fichier texte, en effet,
techniquement un fichier csv est un fichier texte. Cependant, le format CSV
étant pratique à manipuler (notamment car il peut être utilisé dans une base
de données, dans un tableur, ...), php propose de nombreuses fonctionnalités
pour le manipuler.
3
1
2
<?php
$ligne = 1; // compteur de ligne
3
4
5
6
7
$fichier = fopen("fichier.csv", "a+");
while($ligne=fgetcsv($fichier,1024,';'))
{
$champs = count($ligne);//nombre de champ dans la
,→
ligne en question
8
//affichage de chaque champ de la ligne en
,→
question
for($i=0; $i<$champs; $i ++)
{
echo $ligne[$i] . "<br />";
}
9
10
11
12
13
14
}
15
16
17
fclose($fichier);
?>
Le code ci-dessous montre comment lire un fichier csv avec la méthode
fgetcsv. Cette méthode prend 3 arguments :
— la variable de fichier
— la taille d’une ligne (souvent 1024)
— le caractère de séparation (traditionnellement ; ou ,).
Lors de la lecture d’une ligne, la fonction fgetcsv renvoi un tableau, avec
dans chaque case les ”parties” entre les séparateurs. C’est comme cela que
fonctionne votre import dans une base de données.
1.3.2
1
2
Écrire
<?php
$ligne = 1; // compteur de ligne
3
4
$fichier = fopen("fichier.csv", "a+");
5
6
7
$tableau = array('a','b');
fputcsv($fichier, $tableau, ";");
8
9
10
fclose($fichier);
?>
4
L’écrire se fait par l’intermédiaire de la fonction fputcsv, qui prend 3
paramètres :
— le fichier
— un tableau de données
— le séparateur.
Cette fonction va transformer le tableau en une ligne de texte, où les
éléments seront séparés par le séparateur.
1.4
1.4.1
Exercices
Lire un fichier texte
1. Récupérer le fichier exemple.txt sur davidannebicque.fr
2. le mettre dans votre répertoire, vérifier les droits.
3. Écrire un fichier qui va récupérer et afficher le contenu de ce fichier.
1.4.2
Écrire un fichier texte
1. Écrire un fichier php qui permet de générer un fichier txt contenant
le texte de votre choix
1.4.3
Lire un fichier csv
1. Récupérer le fichier comics.csv sur davidannebicque.fr
2. le mettre dans votre répertoire, vérifier les droits.
3. Ecrire un fichier qui va récupérer et afficher le contenu de ce fichier.
1.4.4
Écrire un fichier csv
1. Écrire un fichier csv, séparateur ”;” qui va contenir les données de la
table comics
2. Tester le fichier généré dans un tableur.
5

Documents pareils