/expression/ ou #expression#
L'accent circonflexe (hu ?) ^ indique que l'expression doit commencer à chercher au début de la chaîne./^(?:debut)/
Vient après le point . qui désigne "n'importe quel caractère". Il sert de Joker. L'étoile * indique que le caractère précédent peut être répété à l'infini, ou pas ! Ainsi la combinaison .* permet de "sélectionner" toute l'expression jusqu'à la prochaine condition./^(?:.*_)/
Ici s'achève le sous masque. L'idée est de répéter ce motif puisque ta variable est de la forme xxx_yyy_qqch. L'ajout de {n} permet de répéter le motif précédent n fois. Ici le motif est un sous-masque. Il sera donc répété 2 fois. Actuellement notre petit regex identifie xxx_yyy_. Il ne reste plus qu'à récupérer la fin./(masque)/
On va une fois de plus avoir recours à un Joker .*. Seulement voila, ce n'est pas fini ! Si on arrête pas la recherche par une autre condition, ici la virgule, tout sera sélectionné. Ainsi notre expression finale devient /^(?:.*_){2}(.*),/
Maintenant que nous avons l'expression, il nous faut l'appliquer via preg_match().preg_match( '/^(?:.*_){2}(.*),/', $str, $match );
Si quelquechose est trouvé, nous devons l'extraire ! Et ce de la manière suivante :$var = $match[1][0];
La première colonne correspond à l'aboutissement du regex, la deuxième aux résultats.// première colonne, deuxième ligne
// $match[1]
// deuxième colonne, première ligne
// $match[1][0]
J'espère avoir été assez clair
Code : Tout sélectionner
#^(?:.*_){2}(.*?),#Code : Tout sélectionner
#^(?:[^_]*_){2}([^,]*)#