web-dev-qa-db-fra.com

Comment valider un numéro de téléphone avec PHP?

Comment valider un numéro de téléphone en utilisant php

45
DEVOPS

Étant donné que les numéros de téléphone doivent être conformes à un modèle, vous pouvez utiliser des expressions régulières pour faire correspondre le numéro de téléphone entré au modèle que vous avez défini dans l'expression rationnelle.

php a les deux fonctions ereg et preg_match (). Je suggérerais d'utiliser preg_match () car il y a plus de documentation pour ce style de regex.

Un exemple

$phone = '000-0000-0000';

if(preg_match("/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/", $phone)) {
  // $phone is valid
}
23
Ben Rowe

Voici comment trouver des numéros de téléphone américains valides à 10 chiffres. À ce stade, je suppose que l'utilisateur veut mon contenu afin que les numéros eux-mêmes soient fiables. J'utilise dans une application qui envoie un message SMS), donc je veux juste les chiffres bruts, peu importe le choix. Le formatage peut toujours être ajouté plus tard

//eliminate every char except 0-9
$justNums = preg_replace("/[^0-9]/", '', $string);

//eliminate leading 1 if its there
if (strlen($justNums) == 11) $justNums = preg_replace("/^1/", '',$justNums);

//if we have 10 digits left, it's probably valid.
if (strlen($justNums) == 10) $isPhoneNum = true;

Edit: J'ai fini par devoir porter ceci en Java, si quelqu'un est intéressé. Il fonctionne à chaque frappe, alors j'ai essayé de le garder assez léger:

boolean isPhoneNum = false;
if (str.length() >= 10 && str.length() <= 14 ) { 
  //14: (###) ###-####
  //eliminate every char except 0-9
  str = str.replaceAll("[^0-9]", "");

  //remove leading 1 if it's there
  if (str.length() == 11) str = str.replaceAll("^1", "");

  isPhoneNum = str.length() == 10;
}
Log.d("ISPHONENUM", String.valueOf(isPhoneNum));
27
jmaculate

Je dépend fortement des formats de numéro que vous souhaitez prendre en charge et de la rigueur avec laquelle vous souhaitez appliquer le regroupement de numéros, l'utilisation des espaces et des autres séparateurs, etc.

Jetez un oeil à cette question similaire pour avoir des idées.

Il y a ensuite E.164 qui est une recommandation normalisée en matière de numérotation de IT-T

16
Ivar Bonsaksen