Vérification numéro de téléphone - Form PHP

Résolu
Mysterious_fea Messages postés 406 Statut Membre -  
 Azote22 -
Bonjour,
Comment vérifier qu'un champ est numérique et qu'il fait exactement 10 chiffres (pour un numéro de téléphone) en PHP SVP ?
Merci
a+
Configuration: Windows Vista
Firefox 2.0.0.10

7 réponses

  1. Ssylvainsab Messages postés 2892 Statut Modérateur 825
     
    Salut !
    if(preg_match('`[0-9]{10}`',$numero_de_telephone));echo "C'est bon";

    https://www.php.net/preg_match
    --
    Sylvain
    18
    1. Poulpos
       
      Info déconcertante : avec le numéro '0032486756537',

      if(preg_match(''[0-9]{10}'',$nb_value)){
      $nb_valid++;
      }else{
      $nb_invalid++;
      }

      m'incrémente $nb_valid au lieu de l'autre, alors que ca taille est de 13 et non 10.
      Ceci m'amène à la question : a-t-il testé seulement les 10 premiers digits, ou {10} veut-il dire "au moins 10" et non "exactement 10" ?
      0
    2. Poulpos
       
      Elements de réponse : il semblerait que cela ne teste QUE les 10 premiers digits, car il incrémente $nb_valid également avec '0032486756A37' (lettre en 11eme position) alors qu'avec '00324867A6537' (lettre en 9eme position) il incrémente bien $nb_invalid.

      Plus ennuyeux : exactement les memes résultats en utilisant :
      preg_match(''[0-9]{10,13}'',$nb_value))
      0
    3. Poulpos
       
      Réponse finale : en fait c'est dû au fait que formulé ainsi, il se contente de valider "une suite de 10 (ou de 10 à 13 selon la version) caractères numériques", sous entendu : sont valides les suites suivantes :
      - une lettre puis au moins 10 chiffres
      - au moins 10 chiffres puis une lettre
      - une lettre suivi d'au moins 10 chiffres suivi d'une lettre suivie de 1789 chiffres.
      - etc.

      Donc il fallait vérifier que la chaine commençait ET finissait obligatoirement par des chiffres ET re-spécifier sa taille, ce qui donne :

      if(preg_match(''^[0-9]{9,13}[0-9]$'', $nb_value)){
      	$nb_valid++; 
      }else{ 
      	$nb_invalid++; 
      }
      


      et là, on a bien un chaine commençant obligatoirement par 9 à 13 chiffres (^[0-9]{9,13}), suivie d'un dernier chiffre ([0-9]$), sous entendu : une chaine composée obligatoirement de 10 à 14 chiffres...
      0
    4. Lyrics
       
      Simplement deux teste :
      preg_match("regex", $string); : Cette fonction php permet de vérifier grâce au REGEX la correspondance avec la chaine de caractére $string.

      La traduction du REGEX expliqué par Poulpos :

      -'cela ne teste QUE les 10 premiers digits' [qui doivent être des chiffres compris entre 0 et 9]

      Ensuite tout simplement la fonction :
      strlen($string); : Retourne le nombre de caractère dans la chaine de caractère ( espace compris).

      voilà donc ta condition écrite :

      if( preg_match(''[0-9]{10}'',$nb_value) && strlen($nb_value) == 10){

      $nb_valid++;

      }else{

      $nb_invalid++;

      }

      Réponse à un topic de 2008 ! en 2012 ! :) J'aime ! (oukilé le pouce ! :p)
      0
    5. Azote22
       
      Une question, ne vaut'il mieux pas utilisé le '/ plus que '' et qu'elle est la différence?

      Comme ceci :
      if( preg_match('/[0-9]{10}/',$nb_value) && strlen($nb_value) == 10){
      0