Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Langage, bibliothèques et fonctions > Enregistrer et lire des données de fichiers .ini > Les bases > Découverte du fichier ini > Lecture du tutoriel

Découverte du fichier ini

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Kyle Katarn
Note : 15 / 20 (3 votes)
Visualisations : 1 869


Plus d'informations Plus d'informations
Voilà une question qui doit quand même trotter dans quelques têtes :
C'est quoi ces fameux fichiers ini ? o_O

Alors, pour la petite histoire, "ini" est leur petit nom (leur extension), ils s'appellent en fait "fichiers d'initialisation" et sont omniprésents dans le système windows ; bien que les plus importants aient été remplacés par des bases de registre dans les dernières versions du système d'exploitation.

Vous allez maintenant découvrir une de ces étranges créatures.
Sommaire du chapitre :
Icône du chapitre
Sommaire Chapitre suivant

Structure d'un fichier .ini

Comme dit plus haut, les fichiers .ini portent l'extension .ini, mais leur contenu n'est constitué que de texte (un peu comme les fichiers .html ou .php).

Voici à quoi ressemble un fichier .ini :
Citation : exemple.ini
[informations générales]
date=12/02/06
candidat=Jean Dupont
note=12
;tout à fait correct
[correction]
date=15/02/06
correcteur=Janine Dujardin

Voilà : dans cet exemple, j'ai imaginé qu'on veuille sauvegarder les informations relatives à chaque copie d'un examen dans un fichier. Ceci serait donc le fichier pour la copie de Jean Dupont.

Explications



La première ligne est le nom du groupe : "informations générales", toutes les données qui suivent appartiennent à ce groupe jusqu'à ce qu'on en change.
Les trois lignes qui suivent sont des items, c'est-à-dire des valeurs stockées. Dans date=12/02/06, date est le nom de la variable et 12/02/06, son contenu.
Enfin, la ligne écrite en vert est un commentaire, toute ligne commençant par un point virgule sera ignorée.

Equivalent en php


Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
$exemple["informations_generales"]=array(
"date"=>"12/02/06",
"candidat"=>"Jean Dupont",
"note"=>"12"
);
//tout à fait correct
$exemple["correction"]=array(
"date"=>"12/02/06",
"correcteur"=>"Janine Dujardin"
);
?>

Comme je vous le montre ci-dessus, la structure d'un fichier .ini est comparable à celle d'un array associatif à deux niveaux.

Des exemples concrets d'utilisation



Personnellement, les fichiers .ini m'ont servi dans une galerie d'images pour toutes les options et enregistrements. Ils m'ont aussi été utiles dans la création d'un jeu en ligne pour sauvegarder des informations telles que les compétences d'une race, ou encore les actions possibles sur une case de la map. Mais le .ini peut servir à plein d'autres choses :

Lire un fichier ini

Un fichier .ini se lit en pointant un curseur (virtuel) sur une variable. On va dire en langage PHP : "je choisis le fichier mon_fichier.ini, je vais dans le groupe mon_groupe et dans l'item mon_item". On peut maintenant récupérer la valeur à cet endroit et la modifier.

Et en PHP, ça donne quoi ??
Effectivement on n'a toujours pas vu l'ombre d'un code PHP. Et ce qui va nous faciliter la vie pour trouver la manière de lire ces fichiers .ini, c'est que chaque ligne du fichier correspond à une instruction. Et si je demande quelle est la fonction PHP qui lit un fichier ligne par ligne, vous me répondez tous en coeur ... non ? ... Eh bien c'est file(), cette fonction magique qui retourne un tableau où chaque ligne est contenue dans une entrée du tableau. Et le deuxième outil qui va nous être utile : foreach. Voici donc comment lire ligne par ligne un fichier :
Code : PHP
1
2
3
4
5
6
7
8
<?php
$tableau_de_lecture=file($fichier);
foreach($tableau_de_lecture as $ligne)
{
     // Ici on traite une ligne, par exemple, on peut compter la longueur de chaque ligne en faisant :
     echo strlen($ligne);
}
?>

Et maintenant, il nous faut détecter, pour chaque ligne, s'il y a ouverture de groupe ou un item. Voici un fichier que je vous conseille de prendre pour essayer de trouver le code : http://kyle.katarnls.free.fr/fichier_ini.zip. C'est une liste de membres avec différentes informations pour chacun, en imaginant qu'ils puissent remplir un formulaire sans renseigner tous les champs. Si on avait utilisé une base de données, il y aurait plein de champs vides et il faudrait changer la structure de la table à chaque fois qu'on rajoute une donnée au formulaire. Vous pouvez donc déjà constater un avantage de la méthode .ini.

Bon : au boulot, je vous laisse chercher le code pour détecter, je le rappelle, les groupes et les items ...

Secret (cliquez pour afficher)
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
if(file_exists($fichier) && $fichier_lecture=file($fichier))
  foreach($fichier_lecture as $ligne)
  {
     if(preg_match("#^\[.+\]$#",$ligne))
         //Des crochets au début et à la fin, ça, c'est un groupe, pardi !
     else
         if(!preg_match("#^\;#",$ligne)) //S'il n'y a pas de point-virgule, ce n'est pas un commentaire
         //Donc c'est un item
  }
else
   die("Le fichier est introuvable ou incompatible");
?>

Peut-être que certains n'aiment pas cette façon de coder et préfèrent quand il y a des accolades. Comme j'ai un avis partagé sur le sujet, je vous donne la version aérée :
Secret (cliquez pour afficher)
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(file_exists($fichier) && $fichier_lecture=file($fichier))
{
   foreach($fichier_lecture as $ligne)
   {
      if(preg_match("#^\[.+\]$#",$ligne))
      {
           //Des crochets au début et à la fin, ça, c'est un groupe, pardi !
      }
      else
      {
           if(!preg_match("#^\;#",$ligne)) //S'il n'y a pas de point-virgule, ce n'est pas un commentaire
           {
               //Donc c'est un item
           }
      }
   }
}
else
{
    die("Le fichier est introuvable ou incompatible");
}
?>

Vous savez maintenant différencier les items des groupes à la lecture, nous allons dès le prochain chapitre récupérer notre première valeur.

Q.C.M.

Laquelle de ces lignes n'est pas un groupe ?
Laquelle de ces lignes n'est pas un item ?
Que va faire la ligne suivante ?
;[personnage]nom=Rocky
Quelle fonction permet de récupérer le contenu d'un fichier dans un array ?
Si on a récupéré un array issu du fichier .ini à l'aide de la fonction ... que vous avez trouvée dans la question précédente, et qu'on le met dans la variable $tableau, alors comment afficher la 2e ligne ?

Statistiques de réponses au QCM


Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 10/06/2007 à 23:05:56
Modifié : le 26/08/2008 à 10:36:32
Avancement : 0%
Licence : Copie non autorisée

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.
11 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 456 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0434s (0.0306s)