Bonjour, je recupère un fichier xml de cette forme:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <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:
En faisant un echo des tableaux on s'apercois que les données ne sont pas réciupérées correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 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; }
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.
Partager