Expression régulière pour extraire une chaine entre 2 tags

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

parrot
WRInaute discret
WRInaute discret
 
Messages: 54
Inscription: 8 Juin 2005

Expression régulière pour extraire une chaine entre 2 tags

Message le Mar Juin 21, 2005 10:58

Bonjour,

j arrive pas à faire un truc tout con :(

Je veux extraire le texte situé entre 2 tag : <tag>texte</tag>

J'ai fais ça, ça marche que si je n 'ai qu'une seule fois "<tag>texte</tag>" dans la page :

$texte = eregi("<tag>(.*)</tag>",$page,$regs);

Mais moi j'ai "<tag>texte</tag> sd kshdf <tag>texte2</tag> etc ..." dans une même page.

Comment faire pour récupérér texte, texte2 ???


Merci

fat-freddy
WRInaute discret
WRInaute discret
 
Messages: 158
Inscription: 24 Nov 2003

Message le Mar Juin 21, 2005 11:35

un truk dans le genre marcherait peut être :

$tab = explode("</tag>", $page);
$texte1 = str_replace("<tag>","",stristr($tab[1], '<tag>'));
$texte2 = str_replace("<tag>","",stristr($tab[2], '<tag>'));
etc...

ensuite si tu as un nombre indéderminé d'éléments à recupérer tu peux faire une boucle..

edit > j'avais oublié un bout.. :)


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Mar Juin 21, 2005 11:41

Code: Tout sélectionner
function extractall ($xml, $tag1, $tag2)
{
   $ok     = true;
   $i      = 0;
   while ($ok==true)
   {
      $i1 = strpos($xml, $tag1);
      $i2 = strpos($xml, $tag2);
      
      if ( ($i1!==false) && ($i2!==false) )
      {
         //echo $i1  . " / " . $i2 . " - ";
         $i1 = $i1 + strlen ($tag1);
         
         $len      = $i2 - $i1;
         $data[$i] = substr ($xml, $i1, $len);
         
         $xml      = substr ($xml, $i2+strlen($tag2), strlen($xml));
         
         //echo "<pre>" . htmlentities($data[$i]) . "</pre>\n\n\n";
         
         $i++;
      }
      else
         $ok = false;
   }
   return $data;
}


Ca fait l'extraction d'éléments entre deux tags XML et ça te sort un tableau d'éléments. Sinon, pour XML, il y a des bibliothèques pour faire cela plus proprement (ce n'est pas forcément plus fiable, par contre...).

Seb-
WRInaute discret
WRInaute discret
 
Messages: 188
Inscription: 6 Mar 2005

Message le Mar Juin 21, 2005 17:31

Moi j'utilise ça :

$texte = eregi("<tag>([^<]*)</tag>",$page,$regs);

C'est pas super beau, ça marche pas si tu as un autre tag à l'intérieur, mais pour l'utilisation que j'en fait ça me convient tout à fait.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité