recherche fichier texte

wongfeihung
Invité n'ayant pas de compte PHPfrance

17 févr. 2006, 10:28

Bonjour à tous,

Je dois rechercher dans un fichier.txt une variable que je récupére à partir d'une base. Dans ce fichier txt j'ai 6 valeurs associés de la manière suivante :

libelle : valeur1
libelle : valeur2
libelle : valeur3
...

Comment faire pour tester ma valeur récupéré parmi les 6 proposés dans le fichier texte et récupéré le libellé qui correspond ?

Merci de votre aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 févr. 2006, 12:43

Tu a plusieurs solutions par expression régulière, par recherche d'index... Tu peux par exemple utiliser la fonction explode() sur le caractère ":" pour diviser chacune de tes lignes en un tableau à deux éléments, le premier contenant le libellé, le deuxième la valeur :
foreach($ligneDuFichier as $ligne) {
  $tab = explode(":", $ligne); // sépare libellé et valeur dans des cellules du tableau
  if($tab[1]==$laValeurCherchee) {
    echo $tab[0]; // affiche le libellé associé
    break; // je suppose qu'une fois trouvé il n'y en a pas d'autre, inutile de continuer la boucle
  }
}
Ou avec une expression régulière (à tester, chuis pas sur du pattern :)) :
foreach($ligneDuFichier as $ligne) {
  if(ereg("(.*):".$laValeurCherchee, $ligne, $regs) {
    echo $regs[1]; // affiche le libellé capturé par la parenthèse
    break; // inutile de continuer la boucle
  }
}

ViPHP
ViPHP | 656 Messages

17 févr. 2006, 13:27

Ou sinon un preg_match.

Par exemple preg_match("#(.*) : $variable\n"#, $fichierTexte, $sortie);

http://fr2.php.net/manual/fr/function.preg-match.php