re,
donc : déjà, je donnais 2 exemples.... il faut utiliser l'un ou l'autre, pas les deux en même temps 
1) Que signifient les a+, b+, c+ etc...
=> "a+" = au moins une occurrence de "a", "b+" = au moins une occurence de "b", etc
2) Que signifie le $i dans substr ?
=> c'est $1 cela fait référence au contenu situé entre les premières parenthèses
3) Que signifie la ligne '#a{3,}#i', ?
=> le # est ici un délimiteur, l'expression en elle même est "a{3,}" qui veut dire : au moins 3 occurences consécutives du caractère "a"
Et le "i" à la fin indique qu'il ne faut pas faire la différence entre majuscules et minuscules.
4) Ce sont des expressions rationnelles tout ça ?
=> Voui, à la sauce Perl. Il s'agit de l'extension PCRE de PHP : Perl Compatible Regular Expression. Elles sont censées être plus rapides que les "classiques" POSIX, et je les trouve plus pratiques (bien plus d'options).
5) Plutot que ces deux tableaux, on ne peut pas dire "toute voyelle ou toute consonne triplée", sans les détailler, puisqu'il n'y a pas d'exceptions ?
=> cela donnerait par exemple ça :
ce qui pourrais donner, par exemple :
$string = preg_replace( '#([aeiouy]{3,}|[bcdfghjklmnpqrstvwxz]{3,})#ie', 'substr( \'$1\', 0, 2 )', $string );
Mais du coup, si on reprend notre exemple "cooooooooon", tu obtiendrais "coon"... et en cas de faute de frappe, "cooin" donnerait "coon" également...
Personnellement j'utilise ce genre de mécanisme non pas pour refuser un message ou le modifier, mais plutot pour afficher un petit "drapeau" devant le sujet, afin que les modérateurs controlent ce message en priorité.
PS : pour les explications sur les expressions régulières, le mieux serait quand même de consulter le site Expreg, ou la doc de PHP
Partager