par
abelthorne » 13 mars 2007, 11:52
À la base, je veux tester un nom propre, je pars donc du principe qu'il pourra contenir des lettres majuscules et minuscules, un trait d'union, une apostrophe et une espace.
Je teste donc ma chaîne comme suit :
Code : Tout sélectionner
function testenom($chaine){
if(ereg("^[A-Za-z' -]+$",$chaine)) return true;
else return false;
}
(Je précise que j'ai récupéré la chaîne en question dans un bouquin.)
Tout va bien tant que je n'ai pas de caractères spéciaux. En faisant des tests (sur le terme "Besançon", par exemple), je me suis aperçu qu'avec la présence de la cédille ma fonction me renvoyait "false".
Après, j'ai essayé des caractères accentués, pareil. Comme j'étais en train de tester une chaîne avec un "à" dedans, je l'ai ajouté à la fin et je me suis aperçu que d'un seul coup, la fonction était vérifiée aussi pour les autres caractères accentués et la cédille. D'où mon étonnement et mon message sur le forum.
Seulement, je crois comprendre qu'en fait j'ai rajouté un intervalle entre l'espace et le "à" et que ça a été un peu le hasard que ma fonction marche (je suppose que les autres caractères que j'ai testés étaient dans la plage en question dans le code ASCII).
Donc, je cherche à créer une expression régulière qui teste un nom propre avec toutes les subtilités syntaxiques européennes sans avoir à rajouter tous les caractères spéciaux parce que je risque d'en oublier (sorti des accents grave, aigus, circonflexes, trémas & cécilles, il y a encore des caractères nordiques avec un cercle au-dessus, le tilde sur le n espagnol, etc. ; sans compter qu'il faut alors que je les rajoute en majuscule et minuscule).
À la base, je veux tester un nom propre, je pars donc du principe qu'il pourra contenir des lettres majuscules et minuscules, un trait d'union, une apostrophe et une espace.
Je teste donc ma chaîne comme suit :
[code]function testenom($chaine){
if(ereg("^[A-Za-z' -]+$",$chaine)) return true;
else return false;
}[/code]
(Je précise que j'ai récupéré la chaîne en question dans un bouquin.)
Tout va bien tant que je n'ai pas de caractères spéciaux. En faisant des tests (sur le terme "Besançon", par exemple), je me suis aperçu qu'avec la présence de la cédille ma fonction me renvoyait "false".
Après, j'ai essayé des caractères accentués, pareil. Comme j'étais en train de tester une chaîne avec un "à" dedans, je l'ai ajouté à la fin et je me suis aperçu que d'un seul coup, la fonction était vérifiée aussi pour les autres caractères accentués et la cédille. D'où mon étonnement et mon message sur le forum.
Seulement, je crois comprendre qu'en fait j'ai rajouté un intervalle entre l'espace et le "à" et que ça a été un peu le hasard que ma fonction marche (je suppose que les autres caractères que j'ai testés étaient dans la plage en question dans le code ASCII).
Donc, je cherche à créer une expression régulière qui teste un nom propre avec toutes les subtilités syntaxiques européennes sans avoir à rajouter tous les caractères spéciaux parce que je risque d'en oublier (sorti des accents grave, aigus, circonflexes, trémas & cécilles, il y a encore des caractères nordiques avec un cercle au-dessus, le tilde sur le n espagnol, etc. ; sans compter qu'il faut alors que je les rajoute en majuscule et minuscule).