Expression regulière

DelF -  
kij_82 Messages postés 4260 Statut Contributeur -
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
A voir également:

2 réponses

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

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

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