Extraire une chaine d'un fichier (eregi)

WRInaute occasionnel
Salut à tous

Je voudrais extraire une chaine d'un fichier à l'aide de eregi . Dans le fichier la chaine à extraire se situe entre 2 balises.
Par exemple: <balise ???????????? > chaine à extraire </balise> .
???????????? indique un contenu quelconque

J'ai donc ecrit: eregi("<balise(.*)>(.*)</balise>",$essai, $image);

j'obtiens $image[1]= ???????????? > chaine à extraire et $image[2]=""

Par contre j'ai rajouté par exemple un double guillemet avant > dans le fichier. Ce qui donne <balise ???????????? "> chaine à extraire </balise>
Si maintenant j'écrit: eregi("<balise(.*)\">(.*)</balise>",$essai, $image);
j'obtiens bien maintenant $image[1]= ???????????? et $image[2]= chaine à extraire

Je n'arrive pas à m'en sortir dans mon expression. Comment faire pour prendre en compte <balise ???????????? > dans mon eregi

Merci
 
WRInaute occasionnel
Je viens d'ecrire cette syntaxe , apparemment cela marche. Mais je ne suis pas encore convaincu.

eregi("<balise[^>]*>(.*)</balise>",$essai, $image);

La j'ai bien $image[1]= chaine à extraire

Les expressions régulières , ce n'est vraiment pas mon truc. :?
 
WRInaute accro
Quand on dit regex, on balise tous !! :D :D

Oublie les <>, va directement chercher l'info contenu entre les guillements

Code:
<?php 

  $masque = '#balise="(.*?)"#i'; 
  preg_match_all($masque,$chaine,$matches,PREG_SET_ORDER); 

  // ton resultat se trouve dans le tableau $matches 
?>

Ou sans les guillements:

Code:
<?php 

  $masque = '#balise=(.*?)#i'; 
  preg_match_all($masque,$chaine,$matches,PREG_SET_ORDER); 

  // ton resultat se trouve dans le tableau $matches 
?>
 
Discussions similaires
Haut