J'ai un petit problème concernant la validation d'un nom (idem pour prénom, ville) contenant que des lettres minuscules, majuscules avec ou sans accent.
Voici mon code
//nom
$nom = ucfirst($_POST["nom"]);
//regex pour le nom
if (preg_match("/^([a-zA-Z'àâéèêôùûçÀÂÉÈÔÙÛÇ[:blank:]-]{1,75})$/", $nom))
$regex_nom = true;
else
$regex_nom = false;
//si le nom est invalide
if (!empty($nom) and ($regex_nom == false))
$msg .= 'Nom invalide <br />';
Mon message d'erreur s'affiche quand je fais le test avec René par exemple.
J'avais utilisé ce code pour une insertion dans un base de données et actuellement je le réutilise pour un formulaire de contact. Mais bizarrement, il ne fonctionne pas comme je l'espère.
Merci de bien vouloir me porter secours.
Katarina999 ;)

Mon fichier en utf8:
<?php $noms = array(); $noms[] = 'Hervé'; $noms[] = 'Gérard '; $noms[] = 'René'; $noms[] = 'Anaïs'; $noms[] = 'Noël'; $noms[] = 'Güdrun'; $noms[] = 'Jean louis'; ; $pattern = "/^([a-zA-Z'àâéèêôùûçÀÂÉÈÔÙÛÇ[:blank:]-]{1,75})$/"; foreach ($noms as $prenom) { printf("Longueur en bytes '%s' = %d\t Longueur en caractères %d\t", $prenom, strlen($prenom), iconv_strlen($prenom, 'utf8')); if (preg_match($pattern, $prenom)) echo "$prenom satisfait le masque\n"; else echo "$prenom ne satisfait pas le masque\n"; } ?> johand@osiris:~/src/CCM/php$ php5 regexp01.php Longueur en bytes 'Hervé' = 6 Longueur en caractères 5 'Hervé' satisfait le masque Longueur en bytes 'Gérard ' = 13 Longueur en caractères 12 'Gérard ' satisfait le masque Longueur en bytes 'René' = 5 Longueur en caractères 4 'René' satisfait le masque Longueur en bytes 'Anaïs' = 6 Longueur en caractères 5 'Anaïs' ne satisfait pas le masque Longueur en bytes 'Noël' = 5 Longueur en caractères 4 'Noël' ne satisfait pas le masque Longueur en bytes 'Güdrun' = 7 Longueur en caractères 6 'Güdrun' ne satisfait pas le masque Longueur en bytes 'Jean louis' = 10 Longueur en caractères 10 'Jean louis' satisfait le masqueJohan
Je vais faire le test et je te dirai si cela marche avec mon formulaire.
Comme tu l'avais dit, mon encodage était UTF-8. Je l'ai donc passé en iso-8859-1 et tout fonctionne.
Cependant, j'ai souvent ce genre de problème lorsque je code en PHP. Je ne sais pas s'il faut être en UTF-8 ou en iso-8859-1. Que me conseillerais-tu ?
Merci.