Aller au contenu

expression régulière


ams51

Sujets conseillés

Bonjour,

Je voudrais extraire des sous-chaines d'une chaine de caractère. Les sous chaines sont délimitées par le caratère "_"

Je voudrai utiliser des expressions régulières mais j'ai vraiment du mal !

mon code :

	

$MaChaine="_valeur1_val2_"
$Expression="/_(.)*(?=_)/";
preg_match_all($Expression, $MaChaine, $lesvar, PREG_SET_ORDER);
$var1=$lesvar[0][1]; //=valeur1
$var2=$lesvar[1][1]; //=val2

Ma faille viendrait de $Expression (ne tenez pas compte de ce qu'il y a dedans, j'ai fait plein d'essais et j'ai laissé le dernier :( )...

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Peut-être

$Expression="/(_)(.*)(_)(.*)(_)/";

mais ça n'est qu'une proposition, je ne maîtrise pas assez les expressions régulières pour arriver à des résultats positifs sans tâtonnement :blush:

Lien vers le commentaire
Partager sur d’autres sites

Merci...

Le "bon" code :

$MaChaine="_valeur1_val2_"
$Expression="/_(.*?)_(.*?)_/";
preg_match_all($Expression, $MaChaine, $lesvar, PREG_SET_ORDER);
$var1=$lesvar[0][1]; //=valeur1
$var2=$lesvar[0][2]; //=val2

Lien vers le commentaire
Partager sur d’autres sites

"(.*?)" ne veut trop rien dire ;)

"(.*)" = 0 ou plusieurs occurences de n'importe quel caractères

"(.?)" = 0 ou 1 occurence de n'importe quel caractères

Pour le reste l'usage ou non de parenthèses pour délimiter la chaîne underscore ne doit pas être un problème.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...