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

Résolu/Fermé
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 - 20 janv. 2008 à 17:48
 Azote22 - 12 oct. 2012 à 00:01
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+

7 réponses

Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
20 janv. 2008 à 18:45
Salut !
if(preg_match('`[0-9]{10}`',$numero_de_telephone));echo "C'est bon";

https://www.php.net/preg_match
--
Sylvain
18
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
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
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
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
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