Expression regulière

Bonjour,
je voudrais récuperer dans un texte des chaines de caractères entre crochet (dans l'ex, je veux recuperer Organism A et Organism B) :
blablabla [Organism A]
blablablaba [Organism B]...et je galère...

J'ai essayé des trucs du genre
ereg("^\[[:alpha:]\]$",$tableau[$i],$regs);
mais ça marche po :-(

Merci
DelF
Configuration: windows xp
php 4.3.3

2 réponses

  1. Contributeur
    Tu met ca pour tester et tu me redit :
    ereg("^.*(\[.*\]).*$",$tableau[$i],$regs); 
    echo "Valeur récupérée = ".$regs[0]."<BR>";
    
    0
    1. Ben ça m'affiche tout...
      valeur recuperée : blablabla [organism A]...

      Le pb vient peut etre d'ailleur, voilà mon script :
      <?php

      $tableau=file("blastdedoublonnéTot.txt");

      for ( $i = 0; $i < count($tableau) ; $i++ )

      {

      $organism[$i] = ereg("^.*(\[.*\]).*$",$tableau[$i],$regs);
      echo "Valeur récupérée = ".$regs[0]."<BR>";

      }

      ?>
      0
    2. Contributeur
      Essaie voir ca plutot :
      <?php 
      
      $fp = fopen("blastdedoublonnéTot.txt","r");
      while( !feof($fp) ){
         $ligne = gets($fp,4096);
         if( ereg("[^\[]+(\[[^\]]+\]){1};*",$ligne,$regs) ){
             echo "Selection : ".$regs[0]."<BR>";
        }
        else
            echo "Pas de correspondance trouvee<BR>";
      }
      fclose($fp);
      ?>
      
      
      0
  2. Euh, désolée si j'ai du mal mais suis un peu blonde...
    La fonction "gets" est n'est pas définie...
    0
    1. Contributeur
      C'est quelle version de PHP que tu as ?
      0
    2. Contributeur
      ahh, autant pour moi, c'est 'fgets' et pas 'gets'
      0
    3. @kij_82recoucou
      désolée j'ai dù filé hier soir...
      Alors avec fgets ça a l'air de fonctionner sauf qu'il ne trouve pas de correspondance...(et je te jure qu'il y en a!!!)
      Et elle sert a quoi la fonction fgets?
      0
    4. Contributeur
      @DelFLa fonction fgets sert à lire ligne par ligne dans ton fichier. Plus précisément, elle s'arrete de lire soit quand elle a lu jusqu'à la taille indiquée (pour ton truc j'ai 4096 pour etre sur), soit quand elle rencontre une fin de ligne, ou encore une fin de fichier. Il faut donc laisser une grande taille à lire en paramètre, comme ca elle s'arrettera de lire en fin de ligne.

      Mais si ton script ne marche pas, c'est que la syntaxe que j'ai donnée pour le test de détection n'est pas bonne.
      Il faut en essayée une autre
      0
    5. Contributeur
      @DelFEssai :
      ("[^\[]+(\[[^\]]+\]){1}.*",
      

      a la place de :
      ("[^\[]+(\[[^\]]+\]){1};*",
      

      J'ai fait une faute de frappe sur le dernier '.'
      0