Page 1 sur 1

regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 19:30
par kairi084
Bonjour,

je vous ecris car je suis confronté à un problème qui me taraude et pour lequel je n'ai pas de solution.
Pour vous permettre de comprendre ma problématique je vais vous présenter ma situation.

j'ai dans ma bdd les champs suivants :

ID|type|serie

De l'autre coté jai une page HTML qui contient des infos que je souhaitent insérer en BDD.

Ces dernières se présentent de la façon suivante :

Code : Tout sélectionner

<tr> <td class="style1">Type de Produit</td> <td class="desc">voilier 750</td> </tr> <tr> <td class="style1">Séries</td> <td class="desc"> 4 </td> </tr>
Pour extraire les données entre ces balises j'ai la regex suivante :

Code : Tout sélectionner

<?php preg_match_all('#<td class="style1">\s*(.*)\s*</td>\s*<td class="desc">\s*(.*)\s*</td>#i',$content,$info, PREG_PATTERN_ORDER); ?>
Mon but étant de sortir la catégorie et sa valeur.

Ex : catégorie : Type de Produit
valeur : voilier 750

catégorie : Séries
valeur : 4

Mais voila à la fin on m'affiche un truc dans le genre suivant : Séries 4 OU Type de Produit voilier 750

Je n'ai pas de séparation entre la catégorie et la valeur

Du coup je ne peux pas faire l'algorithme suivant :

Code : Tout sélectionner

Insert into maTable(ID,type,serie) Values('',' valeur de Type de Produit','valeur de Séries');
Quelqu'un pourrait il m'aider =( car je sui complètement coincé et meme pour aller plus loin je ne sais pas comment associer le champs de ma bdd et la categorie du html pour insérer sa valeur .

ex : pour le champ de ma bdd : "type" j'aimerai l'associer avec la catégorie "Type de Produit" du html pour y insérer sa valeur à savoir "voilier 750"

ce qui donnerait dans ma bdd :
ID|type|serie
1|voilier 750|4

merciiii beaucoup et d'avance !! en esperant avoir été claire

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 19:35
par stealth35
utilise DOMDocument c'est pour parser du HTML

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 19:35
par popy
preg_match_all('/<td class="style1">(.*?)<\/td>.*?<td class="desc">(.*?)<\/td>/is',$content,$info, PREG_PATTERN_ORDER)

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 20:00
par kairi084
Salut popy merci pour ta regex!!! par contre comment parcourir "$info" car j'ai plusieurs type de données =( : Type de Produit, Séries.....

Code : Tout sélectionner

preg_match_all('/<td class="style1">(.*?)<\/td>.*?<td class="desc">(.*?)<\/td>/is',$content,$info, PREG_PATTERN_ORDER)
dois je faire un foreach de $info?

Merci a toi !!

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 20:01
par popy
Ben, print_r($info) te dira sur quoi faire ton foreach :]

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 20:21
par kairi084
Dernière question,

si je veux ne récupérer que des chiffres dans le deuxieme pattern est ce que c'est cela que je dois faire ? ([0-9]?) à la place de (.*?) ???? sorry je suis plus que debutante en regex =((

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 21:16
par popy
.*?([0-9]*)

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 21:24
par kairi084
peux tu me confirmer que c'est bien ca pour le deuxieme pattern stp =(
car helas avec ca , cela ne marche pas

preg_match_all('/<td class="style1">(.*?)<\/td>.*?<td class="desc">.*?([0-9]*)<\/td>/is',$content,$info, PREG_PATTERN_ORDER)

Re: regex : exploiter plusieurs pattern pour insert en BDD

Posté : 05 nov. 2010, 21:44
par popy
Ben, reprend l'ancienne et recupère le numéro dans le foreach.