Php Expressions Régulières

Fermé
f123b Messages postés 7 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 5 septembre 2009 - 5 sept. 2009 à 17:50
Bonjour, je recupère un fichier xml de cette forme:

<Refinements>
<Refinement label="Marque" name="Marque" totalvalues="50" type="ValueList">
<RefineValue>
<Title>Samsung</Title>
<Value>Samsung</Value>
</RefineValue>
<RefineValue>
<Title>Sony</Title>
<Value>Sony</Value>
</RefineValue>
</Refinement>
<Refinement label="Prix" name="altPrice" totalvalues="6" type="ValueList">
<RefineValue>
<Title>40 - 280 €</Title>
<Value>40_-_280_Eeuro_</Value>
</RefineValue>
</Refinement>
</Refinements>


le nombre de "Refinement label" dans "Refinements" est variable.
le nombre de "RefineValue" dans "Refinement label" est variable.

je voudrais creer pour chaque "Refinement label" une liste deroulante differente avec dans celle-ci toutes les "RefineValue" qui le concerne.

Par exemple creer la liste deroulante "Marque" avec comme choix: Samsung, sony,...

je récupère les données à l'aide d'expressions régulières en php:

preg_match_all("/<Refinements>(.+)<\/Refinements>/Uism", $data, $items);
$countsub=0;
foreach ($items[1] as $item){

if (preg_match("/<Refinement label=\"(.*)\".*>/Uism", $item, $filtre) == 1) {
$r_filtre[$countsub] = trim(addslashes(strip_tags($filtre[1])));
}
if (preg_match("/<Title>(.+)<\/Title>/Uism", $item, $titre) == 1) {
$r_titre[$countsub] = trim(addslashes(strip_tags($titre[1])));
}
if (preg_match("/<Value>(.+)<\/Value>/Uism", $item, $value) == 1) {
$r_value[$countsub] = trim(addslashes(strip_tags($value[1])));
}
if (preg_match("/<NumberOfProducts>(.+)<\/NumberOfProducts>/Uism", $item, $number) == 1) {
$r_number[$countsub] = trim(addslashes(strip_tags($number[1])));
}
++$countsub;
}


En faisant un echo des tableaux on s'apercois que les données ne sont pas réciupérées correctement.
J'ai essayé en changeant les expressions régulières, en rajoutant d'autres boucles foreach, mais étant plutot novice je n'arrive à rien.

Qu'est ce qui ne va pas dans les expressions régulières ou dans le code?

Merci d'avance pour vos réponse.