ams51 Posté 21 Novembre 2005 Posté 21 Novembre 2005 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
dièse Posté 21 Novembre 2005 Posté 21 Novembre 2005 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
ams51 Posté 21 Novembre 2005 Auteur Posté 21 Novembre 2005 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
dièse Posté 21 Novembre 2005 Posté 21 Novembre 2005 "(.*?)" 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant