Lecture ecriture dans un fichier  

Il peut être utile d'écrire ou de lire dans un fichier, par exemple pour la création d'un fichier de log.
Nous allons d'abord voir comment lire dans un fichier, puis écrire dans ce fichier.

La fonction fopen() permet d'ouvrir un fichier et renvoie un pointeur sur celui-ci (un file descriptor, ce qui permet d'identifier les fichier ouverts par la suite). Le premier argument est le nom du fichier, le deuxième le mode d'ouverture (lecture seule, lecture et écriture, etc...).

Contenu du fichier exemple.txt
  1. Linux is a free Unix-type operating system originally created by Linus Torvalds with the assistance of developers around the world. Developed under the GNU General Public License, the source code for Linux is freely available to everyone. Click on the link below to find out more about the operating system that is causing a revolution in the world of computers.

 

Code
  1. <?php
  2. $fd = fopen('exemple.txt', 'r');
  3. while($line =fgets($fd, 4096))
  4. {
  5.         echo nl2br($line);
  6. }
  7. fclose($fd);
  8. ?>

 

Résultat
  1. Linux is a free Unix-type operating system originally created by Linus Torvalds with the assistance of developers around the world.
  2. Developed under the GNU General Public License, the source code for Linux is freely available to everyone.
  3. Click on the link below to find out more about the operating system that is causing a revolution in the world of computers.

 

La fonction fgets() permet de récupérer la ligne courante. Son premier argument est le pointeur de fichier renvoyée par fopen(), son deuxième argument est la taille maximale moins un que l'on veut récupérer si la ligne est assez grande (ex: si il vaut 10 et la ligne mesure 42 caractères on récupérera les 9 premiers caractères si la chaîne est maintenant de 6 caractères on récupérera toutes la lignes).

nl2br() renvoie la chaîne passe en argument en remplaçant les retours chariots ('\n') par des &;ltbr&;gt. Enfin la fonction fclose() ferme le fichier et détruit le pointeur sur fichier. Il n'est pas obligatoire de fermer ses fichiers, mais il est fortement recommander de le faire !

 

C'est la fonction fwrite() qui permet d'écrire dans les fichiers. Elles prend comme argument le pointeur sur fichier et la chaîne de caractères que l'on veut y écrire. Elle renvoie -1 en cas d'échec sinon le nombre de caractères écris.

Le fichier visit.log avant l'écriture
  1. 01-2005 18:42: 83.114.172.217
Le code
  1. <?php
  2. $fd = fopen("visit.log", "r+");
  3. //on recupere l'ip du visiteur
  4. if (getenv(HTTP_X_FORWARDED_FOR))
  5.    $ip = getenv(HTTP_X_FORWARDED_FOR);
  6. else
  7.    $ip = getenv(REMOTE_ADDR);
  8.  
  9. //on recupere la date et l'heure
  10. $date = date("d-m-Y");
  11. $heure = date("H:i");
  12.  
  13. //on écrit dans le fichier
  14. fwrite($fd, "$date $heure: $ip\n");
  15.  
  16. //on ferme le fichier
  17. fclose($fd);
  18.  
  19. //et enfin on l'affiche
  20. readfile('visit.log');
  21. ?>

 

Le fichier visit.log après l'écriture
  1. 12-01-2005 18:42: 83.114.172.217
  2. 22-02-2005 16:40: 83.114.172.217

 


Retour à l'accueil des articles