Expression réguliere

titof -  
 Laurent -
Slt tlm,

jai des pb avec une expression réguliere
je voudrais récupéré le contenu de tags
par exemple :

$test="chaine1 <tag>iii<h>i <tag>iii</tag><hhhh><tag><pppppaz 4654-_ddd</tag>";

$exp ="/<tag>(.*)(^(<\/tag>))(.*)<\/tag>/";

preg_match_all($exp, $test, $resul)
print_r($resul)

qu'il me récupere
iii<h>i <tag>iii
><pppppaz 4654-_ddd

Ce qu'il ne fait pas :(

le probleme de cette solution
$exp  ="/<tag>(.*)<\/tag>/";


Prend tout ->
iii<h>i<tag>iii</tag><hhhh><tag><pppppaz 4654-_ddd

Si quelqu'un voit la solution

thx
A voir également:

3 réponses

Laurent
 
En fait le fait de mettre ? limite la recherche au plut petit

Par exemple avec (.*) il prend la chaine la plus grande c'est à dire tout ce qui est entre le premier <tag> et le dernier </tag>

En ajoutant le ? tu demandes explicitement la chaine la plus courte qui correspond aux masque soit tout ce qui est entre le premier <tag> et le premier </tag>
1
rucht Messages postés 248 Statut Membre 1
 
ta question n' est pas tres claire !

si tu pouver reformuler et dire en quel langage tu programe ce serai mieu !

rucht ( qui a rien compri )
0
titof
 
Ben en fait, en cherchant sur le net jai trouvé la solution mais le probleme cest que je ne la comprend pas !!!!

$chaine="chaine1 <tag>xiiix<h>yi iiiy</tag><hhhh>9<tag>ppp<tag>ppaz 4654-_ddd</tag>"; 
$motif="`<tag>(.*?)</tag>`"; 
preg_match_all($motif,$chaine,$out); 

$nb=count($out[1]); 
for($i=0;$i<$nb;$i++)
{ 
  echo $out[1][$i],'<br/>'; 
}


Si quelqu'un pouvais me traduire ca en francais
"`<tag>(.*?)</tag>`"

car ` et *? je ne sais vraiment pas ce que cela veux dire

mci

PS : le but est de récupérer lintérieur des balises <tag>
0