IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

vérifier un numro de téléphone


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut vérifier un numro de téléphone
    Bonjour,

    Je voudrais vérifier un numéro de téléphone, voici les différents formats

    084715465
    +32 84 71 54 65

    0475/45.52.25
    +32 475 45 52 25

    Il pourrait y avoir les signes : /;.;-;+;,; etc...

    Pour le moment j'utilise eregi, mais qui est maintenant déprécié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function fct_isphone($str) {
      # Vérification du téléphone
      if (!eregi("^\+?[0-9|\.| |-]{6,20}$", $str)) {
         return false;
      }
         return true;
    }
    merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Les fonctions PCRE (preg..) sont plus rapides et plus puissantes que les fonctions POSIX (ereg...) mais d'une manière générale les motif utilisés avec POSIX fonctionneront avec PCRE, il suffit juste d'ajouter des délimiteurs. Si je choisi comme délimiteur le caractère '#' ta fonction donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function fct_isphone($str) {
     
       return preg_match("#^\+?[0-9|\.| |-]{6,20}$#", $str) > 0 ? true : false;
     
    }
    plus simplement avec les caractères que tu as indiqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return preg_match("#^\+?[0-9\./, -]{6,20}$#", $str) > 0 ? true : false;
    car dans une classe de caractères les '|' sont considérés comme tel, pas comme des "ou"

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Bonjour et merci de ta réponse.

    J'ai testé cela se matin. Par contre l'expression me revoie "true" au 1er chiffre et n'est pas limitée à un maximum de 16 caractères...

    J'ai essayé de la modifier, mais sans succès....

    Est actuellement accepté :

    1 (ne devrait pas être accepté)
    017452545
    +21547898785
    12121212212121212121212.... (ne devrait pas être accepté)

    N'est pas accepté (et devrait être accepté):

    +32.478.86.48.21
    +32 478/86.48.21
    0478/86 48 21
    0478/86.48.21
    +32 017/452545
    +32.01.74.52.545

    Il pourrait aussi y avoir des : ; , - +

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Je comprends pas ton pb. Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function fct_isphone($str) {
     
       return preg_match("#^\+?[0-9\./, -]{6,20}$#", $str) > 0 ? true : false;
     
    }
     
    $test = array();
    $test[] = '1';
    $test[] = '017452545';
    $test[] = '+21547898785';
    $test[] = '12121212212121212121212';
    $test[] = '+32.478.86.48.21';
    $test[] = '+32 478/86.48.21';
    $test[] = '0478/86 48 21';
    $test[] = '0478/86.48.21';
    $test[] = '+32 017/452545';
     
     
    foreach ($test as $value) 
    {
    echo $value.' : ';var_dump(fct_isphone($value));echo'<br>';
    }
    cela m'affiche en réponse :
    1 : bool(false)
    017452545 : bool(true)
    +21547898785 : bool(true)
    12121212212121212121212 : bool(false)
    +32.478.86.48.21 : bool(true)
    +32 478/86.48.21 : bool(true)
    0478/86 48 21 : bool(true)
    0478/86.48.21 : bool(true)
    +32 017/452545 : bool(true)
    C'est bien le résultat attendu, non ?

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Je l'ai intégré dans une autre fonction ca doit la parasiter... Voici le code...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function fct_isempty($str) {
    	if(!strlen(trim($str))) {
    		return true;
    	} else {
    		return false;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function fct_isphone($str) {
    	if(!fct_isempty($str)) { # On vérifie tout d'abord s'il ne s'agit pas d'une chaîne vide
    		# Vérification du téléphone
    		return preg_match("#^\+?[0-9\./, -]{6,20}$#", $str) > 0 ? true : false;
    	} else {
    		return false;
    	}
    	return true;
    }

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    On peut faire ce que tu veux faire avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function fct_isphone($str) {
     
       return preg_match("#^\+?[0-9\./, -]{6,20}$#", trim($str)) > 0 ? true : false;
     
    }
    EDIT ou encore plus conventionnellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function fct_isphone($str) {
       $str = trim($str);
       if($str != '')
       return preg_match("#^\+?[0-9\./, -]{6,20}$#", $str) > 0 ? true : false;
       else return false;
     
    }

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Super cela fonctionne merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le numéro de téléphone entrant
    Par louisss dans le forum Access
    Réponses: 23
    Dernier message: 26/07/2023, 18h21
  2. Réponses: 0
    Dernier message: 21/03/2012, 00h26
  3. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 09h25
  4. Insérer un numéro de téléphone
    Par Fleep dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/10/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo