Bonjour,

J'ai remarqué que quand ?: se trouvait à l'intérieur d'une parenthèse, ce n'est pas la parenthèse qui suit ?: qui est exlue du match mais tout ce qui se trouve dans la première parenthèse :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
preg_match( '#^http://localhost/(([a-z]+)/)?#', 'http://localhost/test/', $match);
echo $match[2];
est équivallent à, avec l'emloi du passive group

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
preg_match( '#^http://localhost/(?:([a-z]+)/)?#', 'http://localhost/test/', $match);
echo $match[1];
Je croyais que ?: ne concernait que la parenthèse devant laquelle ces signes étaient placés et non tout le contenu de la parenthèse dans laquelle ils se trouvent.