Formulaire validation du numéro de téléphone

Eléphant du PHP | 331 Messages

14 déc. 2006, 05:16

Dans le tutoriel:

http://www.phpfrance.com/forums/voir_sujet-12858.php

La validation du numéro de téléphone ne marche pas pour les numéro canadien.

Dans nos numéro nous avons des - ( )

Ex.: (418) 671-2092

Pouvez-vous m'indiquer la modification nécessaire ?

Merci, voici le code:
$phone = "#^\d{6,10}$#";

        if (($telephone) && !(preg_match($phone,$telephone)))
        {
            print "<p>Le num&eacute;ro de t&eacute;l&eacute;phone doit comporter seulement des chiffres, de 6 &agrave; 10 chiffres sans espaces ni tirets</p>\n";
        }

Mammouth du PHP | 19672 Messages

14 déc. 2006, 09:45

Un détail : le "-" ne fait pas partie de ce que l'on compose sur un clavier et ne sert que pour la mise en forme destinée à l'affichage. Donc pour valider, je te suggère de créer une variable temporaire ne comportant que les caractères numériques en faisant sauter le "-".

Donc tu pourrais commencer par reformater le numéro envoyé pour la validation. Par exemple :
$numtmp = preg_replace("#[^\d]*#", "", $telephone);
$phone = "#^\d{6,10}$#";
/* On valide $numtmp et non $telephone */
if (($telephone) && !(preg_match($phone,$numtmp)))
{
            print "<p>Le num&eacute;ro de t&eacute;l&eacute;phone doit comporter seulement des chiffres, de 6 &agrave; 10 chiffres sans espaces ni tirets</p>\n";
}
Autre possibilité : dans ton formulaire, tu pourrais prévoir une liste déroulante des indicatifs régionaux ià coté de la zone de saisie du numéro lui-même, par exemple une liste avec 418, 514, 450, etc... Et éventuellement tu pourrais ajouter un petit JavaScript interdisant la saisie d'autre chose que de numéros à l'aide d'un évènement onkeyup.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: