Fonction de verification tel et formatage international

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 820 fois - Téléchargée 7 fois

Contenu du snippet

Je vous propose une fonction de formatage et de verrification du telephone au format international.

je suis preneur de vos commentaires et suggestions pour la faire evoluer.

function tel_international($prefix = '33', $tel_format_national)

{


    switch ($prefix) {

        case 33:
            $syntaxe = "/^0[0-9]{9}$/"; // France métropolitaine : +33 C CC CC CC CC ou 0C CC CC CC CC (format national)
            break;

        case 590:
            $syntaxe = "/^0[0-9]{9}$/"; //   Guadeloupe : +590 CCC CC CC CC ou 0CCC CC CC CC(format national)
            break;

        case 596:
            $syntaxe = "/^0[0-9]{9}$/"; // Martinique : +596 CCC CC CC CC ou 0CCC CC CC CC (format national)
            break;

        case 594:
            $syntaxe = "/^0[0-9]{9}$/"; // Guyane : +594 CCC CC CC CC ou 0CCC CC CC CC (format national)
            break;

        case 262:
            $syntaxe = "/^0[0-9]{9}$/"; // Réunion et Mayotte : +262 CCC CC CC CC ou 0CCC CC CC CC (format national)
            break;


        case 687:
            $syntaxe = "/^[0-9]{6}$/"; // nouvelle caledonie
            break;

        case 689:
            $syntaxe = "/^[0-9]{8}$/"; // Polynésie française
            break;

        case 32:
            $syntaxe = "/[0-9]{8,10}/"; // BELGIQUE
            /*
             *
             *  Belgique :
Format national 9 chiffres : 0ZZ CC CC CC ou 0Z CCC CC CC
Format international : +32 ZZ CC CC CC ou +32 Z CCC CC CC
Le premier chiffre dans le format national est toujours le zéro.
Il faut toujours composer l'indicatif de zone (Z ou ZZ). L'indicatif de zone fait le plus souvent 2 chiffres, excepté dans les grandes agglomérations où l'on est passé à 1 chiffre. (Bruxelles : 2, Anvers : 3, Liège : 4, Gand : 9). Les 070 et 078 ne sont pas utilisés pour des zones, mais pour des numéros spéciaux à bas prix (078 prix d'un appel local, 070 = 0,30 €/min), seul le 071 concerne bien une zone géographique.
GSM (national) 10 chiffres : de 045C CC CC CC à 049C CC CC CC
GSM (international) : de +32 45C CC CC CC à +32 49C CC CC CC
À l'heure actuelle, il n'est plus possible de déterminer l'opérateur à l'aide du numéro de téléphone portable (les numéros peuvent être portés chez un autre opérateur). Auparavant, les numéros étaient rattachés aux différents opérateurs comme suit : 049C = Orange, 047C = Proximus, 048C = Base.
Numéro gratuit : 0800/
Numéro payant a minimum 1 euro/min : 090C/
             *
             * */
            break;

        default:

            $syntaxe = "/^0[0-9]{9}$/"; // France métropolitaine : +33 C CC CC CC CC ou 0C CC CC CC CC (format national)
            break;


    }

    if (preg_match($syntaxe, $tel_format_national)) {

        if ($prefix == 687 OR $prefix == 689) {
            $num_international = '+' . $prefix . $tel_format_national;
        } elseif ($prefix == 32) {

            $longeur = strlen($tel_format_national);

            if ($longeur == 10) {
                $tel_sans_zero = substr($tel_format_national, 1);
                $num_international = '+' . $prefix . $tel_sans_zero;

            } else {
                $num_international = '+' . $prefix . $tel_format_national;
            }


        } else {
            $tel_sans_zero = substr($tel_format_national, 1);
            $num_international = '+' . $prefix . $tel_sans_zero;
        }


    } else {
        $num_international = false;
    }


    return $num_international;


}

Compatibilité : 1

A voir également

Ajouter un commentaire

Commentaires

cs_stay
Messages postés
496
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2 -
Bonjour,

Pour moi, ce n'est pas une bonne idée de sécuriser les données coté client. Tu fais ton teste coté serveur et les retours négatifs sont dites au client.

Et moi, j'aurais fait autrement ;).

D'abord, Il faut ce référer au pays (dans une combobox). Par la suite en JS, tu modifies l'attribut data-mask (HTML5) de l'input. Le client aura un champ de texte au bon format avant même d'écrire son tel.

<input type="text" class="form-control" name="contact[tel]" id="contact-tel" value="" data-mask="+33 999999999" placeholder="Insérer votre téléphone">


C'est plus simple à gérer et tu auras un formulaire user friendly.
Tu images le client avec un retour du genre. Le format du téléphone n'est pas correcte !. Alors que pour lui, 0033 ou +33 c'est du pareil au même. Et même si tu gères les différentes possibilités dans ton script, c'est une chose à faire en plus.
merci monsieur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.