Expression regulière

DelF -  
kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   -
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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    Tu met ca pour tester et tu me redit :
    ereg("^.*(\[.*\]).*$",$tableau[$i],$regs); 
    echo "Valeur récupérée = ".$regs[0]."<BR>";
    
    0
    1. DelF
       
      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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
       
      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. DelF
     
    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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
       
      C'est quelle version de PHP que tu as ?
      0
    2. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
       
      ahh, autant pour moi, c'est 'fgets' et pas 'gets'
      0
      1. DelF > kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention  
         
        recoucou
        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
      2. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857 > DelF
         
        La 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
      3. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857 > DelF
         
        Essai :
        ("[^\[]+(\[[^\]]+\]){1}.*",
        

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

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