Disons que j'ai la chaîne suivante: Func(param1, param2)
avec un nombre inconnu de paramètres.
Et je veux obtenir le tableau suivant:Capture du sous-motif répétitif
Array(
[0] => Func(param1, param2),
[1] => Func
[2] => param1,
[3] => param2,
...
)
J'ai essayé ceci:
$str = 'Func(param1, param2)';
preg_match('/^([a-z]+)\((?:([a-z0-9]+)\s*,?\s*)*\)$/i', $str, $matches);
print_r($matches);
Et c'est la sortie:
Array
(
[0] => Func(param1, param2)
[1] => Func
[2] => param2
)
Le sous-motif qui capture les params captures seulement le dernier param. Et je veux qu'il capture tous les paramètres.
Des idées?
EDIT:
Je sais que je peux saisir toutes les params puis utilisez exploser. Mais ce n'est pas ma question.
Je veux savoir comment cela se fait avec les expressions régulières.
Je dois vous décevoir, mais ce que vous voulez ** n'est pas possible en PHP ** et c'est la même chose pour presque toutes les langues [sauf Perl 6 et .NET] (http://stackoverflow.com/a/6571139/). Il s'appelle ** groupes de capture répétés ** et il a déjà été demandé [ici] (http://stackoverflow.com/q/6371226/) et [ici] (http://stackoverflow.com/q/6579908/). – HamZa
@HamZa DzCyberDeV D'accord, merci. –