PHP et preg_match_all

Fermé
bolbo
Messages postés
22
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
10 mai 2005
- 10 mai 2005 à 11:07
bolbo
Messages postés
22
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
10 mai 2005
- 10 mai 2005 à 13:59
Bonjour,

Je cherche à faire une expression régulière qui me permette de reconnaitre un champ SELECT.

Pour le moment, j'ai le code suivant :
$html = "<SELECT name=\"mois_naissance_emprunteur\" title=\"Mois\"><OPTION Value=\"0\">--</OPTION><OPTION Value=\"janvier\">janvier</OPTION><OPTION Value=\"fevrier\">fevrier</OPTION><OPTION Value=\"mars\">mars</OPTION><OPTION Value=\"avril\">avril</OPTION></SELECT>";
					
echo $html."<br><br>";
					
					


$motif="`(<(SELECT+)[^>]*>)(.*)(<\/\\2>)`";
preg_match_all ($motif, $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) 
{
  echo 'total : ' . $matches[0][$i] . "\n<br>";
  echo 'partie 1 : ' . $matches[1][$i] . "\n<br>";
  echo 'partie 2 : ' . $matches[3][$i] . "\n<br>";
  echo 'partie 3 : ' . $matches[4][$i] . "\n\n<br>____<br>";
}


récupéré sur PHP.net.

Il reconnait bien le select lorsque tout est écrit sur une seule ligne, sans retour chariot ni rien. Dans ce cas, le résultat et correct.

Le problème apparait lorsque le select est sur plusieurs lignes avec indentation :
<SELECT name=\"mois_naissance_emprunteur\" title=\"Mois\">
            <OPTION Value=\"0\">--</OPTION>
            <OPTION Value=\"janvier\">janvier</OPTION>
            <OPTION Value=\"fevrier\">fevrier</OPTION>
            <OPTION Value=\"mars\">mars</OPTION>
            <OPTION Value=\"avril\">avril</OPTION>
</SELECT>
par exemple.

Y'a t'il un moyen de lui dire que la parentherse capturante (.*) peut contenir des retour chariot ?

Merci d'avance,

Bolbo

2 réponses

T'as essayé :
$motif="`(<(SELECT+)[^>]*>)
(.*)(<\/\\2>)`";
Y'a une grosse probabilité que ce ne soit pas ça mais bon... autrement tu peux tenter de trouver un "\n" mais il me semble avoir déjà esayé, sans succcès ^^
0
bolbo
Messages postés
22
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
10 mai 2005
2
10 mai 2005 à 13:59
Je viens d'essayer, mais ca ne marche pas .

Merci quand même
0