Le but est de valider un nombre qui est numérique et peut ou non contenir des espaces.

Par exemple, «1800 123 456» et «1800123456» sont acceptables.

Vérifier si ce n'est pas numérique est facile:

if(!is_numeric($phone_number)) {
  //display error message
}

Mais je ne sais pas comment le passer avec des espaces.

Quelqu'un pourrait-il m'indiquer la bonne direction avec cela?

2
MeltingDog 20 avril 2017 à 08:07

3 réponses

Meilleure réponse

Vérifiez simplement sans les espaces:

<?php
if(!is_numeric(str_replace(" ", "", $phone_number))) {
  //display error message
}

Ou, si vous voulez la surcharge d'une expression régulière:

<?php
if (preg_match("/[^0-9 ]/", $phone_number)) {
    //display error message
}
3
miken32 20 avril 2017 à 05:11

Essayez cet extrait de code ici

Regex: ^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$

[\d]{4}\s+[\d]{3}\s+[\d]{3} Exemple: Format de type this 1800 123 456

[\d]{10} Exemple: Format de type this 1800123456

<?php
ini_set('display_errors', 1);
$phone_number='1800 123 456';
if(preg_match("/^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$/",$phone_number)) 
{
     echo "matched";
}
else
{
     echo "not matched";
}
0
Sahil Gulati 20 avril 2017 à 05:10

Vous pouvez utiliser les contrôles suivants:

//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;
0
Satish Saini 20 avril 2017 à 05:11