bonsoir, j'ai un soucis sur un formulaire , voici mon code :
je voudrai que l'on puisse aussi accépter les "espaces")Code:if (!ereg("^[A-Zéeaa-z]{2,20}$", $nom))
pouvais vous me corriger s'il vous plait ?
merci :mrgreen:
Version imprimable
bonsoir, j'ai un soucis sur un formulaire , voici mon code :
je voudrai que l'on puisse aussi accépter les "espaces")Code:if (!ereg("^[A-Zéeaa-z]{2,20}$", $nom))
pouvais vous me corriger s'il vous plait ?
merci :mrgreen:
un espace c'est [:space:] ou \s
et ereg() est obsolète.
merci mais alors par quelle code puis je le remplacer et comme inserer le \s
merci
ok
bon j'ai ca comme code :
ALORS je retourne le probléme a l envers comment empecher qu'il y ait des chiffres dans mon champs du formulaire, j'ai essayer plusieur trucs masi ca ne fonctionne pasCode:
1
2 if (!preg_match('#[^~"@}{& <> *+/]#', $nom)) die (" Le nom que vous avez saisie n'est pas au bon format , veuillez recommencer ");
help me ^^
Pourriez-vous préciser ce que vous souhaitez comme format, au juste ? Peut-être que vous n'avez même pas besoin d'utilisez les expresions régulières. Avez-vous, par exemple, jeté un oeil aux fonctions ctype [http://fr.php.net/manual/fr/ref.ctype.php.
Si tout ce que vous voulez c'est empêcher les chiffres, votre expression régulière pourrait s'écrire :
Code:
1
2
3 if (preg_match('#[:digit:]#', $nom)) die (" Le nom que vous avez saisie n'est pas au bon format , veuillez recommencer ");
je souhaite empecher l'ecriture dans mon formulaire de toutes inscriptions autres que a-zA-Zéàeôîûâà et 'un espace' des fois qu'il y ai des noms de famille en plusieurs mots ..
merci
Essayez ce code :
Je n'ai pas testé mais ça doit convenir pour prendre les lettres a-z, A-Z ainsi que les accents françaisCode:
1
2
3
4
5 setLocale(LC_CTYPE, 'FR_fr.UTF-8'); if (!ctype_alpha($nom)) { // erreur }
et les espaces ??
J'ai oublié que les noms peuvent également avoir des espaces. Sans réfléchir, l'idée qui me vient en tête c'est :
Avec PHP 5.3 :Code:
1
2
3
4
5
6
7
8 setLocale(LC_CTYPE, 'FR_fr.UTF-8'); $only_french_letters = create_function('$a, $b', 'return $a && ctype_alpha($b);'); if (!array_reduce(explode(' ', $nom), 'only_french_letters')) { // erreur }
Code:
1
2
3
4
5
6
7
8
9
10 setLocale(LC_CTYPE, 'FR_fr.UTF-8'); $only_french_letters = array_reduce(explode(' ', $nom), function($a, $b) { return $a && ctype_alpha($b); }); if (!$only_french_letters) { // erreur }
Aux erreurs près ...
je recois se message :
Parse error: syntax error, unexpected T_FUNCTION in
sur la lignec sympa mais je prefererai avec le prereg qui m'est plus familier si c'est possible ^Code:
1
2
3 $only_french_letters = array_reduce(explode(' ', $nom), function($a, $b) { return $a && ctype_alpha($b); });
merci
La version de mseye répond à ta question :
Code:
1
2 if (preg_match('#[:digit:]#', $nom)) die (" Le nom que vous avez saisie n'est pas au bon format , veuillez recommencer ");
Ci-dessous, c'est un exemple car mseye en a donné une version nettement plus clean. Mais si ça peut t'aider à mieux comprendre les regex - donc avec min/MAJ, accents, espace et tiret acceptés :
Et une petite remarque :Code:
1
2
3
4
5 $pcre_pattern = "#[a-zéèàêâùïüëA-Z -][^0-9]#"; if (! preg_match($pcre_pattern, $nom )) { die (" Le nom que vous avez saisie n'est pas au bon format , veuillez recommencer "); }
- avec ton "die", il ne risque pas de recommencer :-)
j'ai essayer ton code et quand je rentre par exemple "francois ferdinand 78"
il l'accepte , or, je ne souhaite pas les chiffres dans un champs noms ^^
ton code je peux par contre l utiliser pour un champ adresse
Bonjour,
C'est normal que le second bout de code débouche sur une syntax error car j'ai précisé que cette syntaxe (fonction anonyme) n'est valable qu'à partir de la version 5.3 de PHP.
Cependant, la première version avec create_function devrait marcher pour une version antérieure de PHP.
Je teste pas forcément le code car je réponds en vrac mais l'idée c'est juste de vous mettre sur une piste.
Et je vous en remercie , mais je n'ai que des bases limitées en php et les fonctions "ereg" ou "prereg" me sont bcp plus familières.
Donc ,soit je recois un code valide que je ne connais pas :aie: :oops:ou on m'aiguille sur el code que je trouve plus agreable a regarder :mouarf:
En tous cas merci de l'effort et j'espere arriver a parvenir à la solution
avec votre aide
rajoute éventuellement d'autres caractères autorisés ...Code:if (!preg_match("^[a-zçèéë ]{2,20}$", $nom))