Les Allergies
Alimentaires
Posez votre question Signaler

Vérification numéro de téléphone - Form PHP [Résolu]

Mysterious_fea 406Messages postés 29 juin 2007Date d'inscription 22 août 2011Dernière intervention - Dernière réponse le 17 févr. 2012 à 19:32
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+
Lire la suite 

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

12 réponses
Réponse
+12
moins plus
Salut !
if(preg_match('`[0-9]{10}`',$numero_de_telephone));echo "C'est bon";

http://php.net/preg_match
--
Sylvain
Poulpos - 9 sept. 2011 à 11:53
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" ?
Poulpos - 9 sept. 2011 à 11:59
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))
Poulpos - 9 sept. 2011 à 18:14
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...
Ajouter un commentaire
Réponse
+2
moins plus
Une petite fonction qui permet de formater un numéro de téléphone français (à 10 chiffres).
<?php
function formatFrenchPhoneNumber($phoneNumber, $international = false){
//Supprimer tous les caractères qui ne sont pas des chiffres
$phoneNumber = preg_replace('/[^0-9]+/', '', $phoneNumber);
//Garder les 9 derniers chiffres
$phoneNumber = substr($phoneNumber, -9);
//On ajoute +33 si la variable $international vaut true et 0 dans tous les autres cas
$motif = $international ? '+33 (\1) \2 \3 \4 \5' : '0\1 \2 \3 \4 \5';
$phoneNumber = preg_replace('/(\d{1})(\d{2})(\d{2})(\d{2})(\d{2})/', $motif, $phoneNumber);

return $phoneNumber;
}

$tel1 = "0144035000";
$tel2 = "01.44.03.50.00";
$tel3 = "01-44-03-50-00";
$tel4 = "Voici mon numéro : 01-44-03-50-00";

echo formatFrenchPhoneNumber($tel1); // affiche "01 44 03 50 00"
echo formatFrenchPhoneNumber($tel2); // affiche "01 44 03 50 00"
echo formatFrenchPhoneNumber($tel3); // affiche "01 44 03 50 00"
echo formatFrenchPhoneNumber($tel4); // affiche "01 44 03 50 00"
echo formatFrenchPhoneNumber($tel1, true); // affiche "+33 (1) 44 03 50 00"
echo formatFrenchPhoneNumber($tel2, true); // affiche "+33 (1) 44 03 50 00"
echo formatFrenchPhoneNumber($tel3, true); // affiche "+33 (1) 44 03 50 00"
echo formatFrenchPhoneNumber($tel4, true); // affiche "+33 (1) 44 03 50 00"
?>
Villa Flore - 17 févr. 2012 à 19:32
Ceci est la solution la plus efficace !
Ajouter un commentaire
Réponse
+1
moins plus
Bonsoir,

Par REGEX vas voir les site: www.siteduzero.com expliquations parfaites pour ton cas.

@lain
Ajouter un commentaire
Réponse
+1
moins plus
Thank you !
Ajouter un commentaire
Réponse
+1
moins plus
Et pour avoir un minimum de 8 caractères et un maximum de 12?
Ssylvainsab- 24 mai 2009 à 16:13
Salut greg !


C'est entre accolades que tu détermines les nombre de caractères requis :
if(preg_match('`[0-9]{10}`',$numero_de_telephone)) echo "C'est bon";

Donc il faut changer {10} en {8,12}

a plus
--
Sylvain
Ajouter un commentaire
Réponse
+1
moins plus
Salut Sylvain

Merci de m'avoir répondu, même si entre temps j'avais finis par deviner le truc en jouant un peu avec.

A plus,

Greg
Ajouter un commentaire
Ce document intitulé « Vérification numéro de téléphone - Form PHP » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?