Envoyé par
php.net
ereg() retourne la longueur de l'occurrence trouvée si une occurrence a été trouvée dans la chaîne string et FALSE dans le cas contraire ou si une erreur est survenue. Si le paramètre optionnel regs n'est pas passé à la fonction ou si la longueur du paramètre string vaut 0, la fonction retournera 1.
----- sans délimiteur -----
var_dump(ereg('[^a-zA-Z0-9]', 'maison')); // bool(false)
Ce qu'il faut comprendre c'est que tous les caractères sont accepté sauf (lettre minuscule, majuscule et chiffre). On prend la chaîne caractère par caractère sans altéré le jugement de l'un à l'autre. Rien correspondant à cela n'a était trouvé retourne => false
var_dump(ereg('[^a-zA-Z0-9]', 'mai;son')); // int(1)
Cette fois ci, un caractère se trouvant dans le "domaine" de recherche est trouvé => retourne 1
----- avec délimiteur -----
var_dump(ereg('^[^a-zA-Z0-9]$', 'maison')); // bool(false)
Aucun caractère ne satisfait le motif => false . Dans ce cas là on ne perçoit pas bien la différence.
var_dump(ereg('^[^a-zA-Z0-9]$', 'mai;son')); // bool(false)
La chaîne est pris comme un 'tout', la fonction retournera false car dans cette chaîne se trouve un caractère "interdit". Autrement dit, Il faut que tous les caractères de la chaîne respecte le motif.
----- conclusion -----
En bref la différence :
sans les délimiteurs :
- On prend la chaîne caractère par caractère sans altéré le jugement d'un caractère à l'autre.
avec les délimiteurs :
- La chaîne est pris comme un 'tout', un caractère n'est pas conforme cela retourne false
Partager