Подтвердить что ты не робот

Как проверить номер телефона с помощью PHP?

Как проверить номер телефона с помощью php

4b9b3361

Ответ 1

Так как номера телефонов должны соответствовать шаблону, вы можете использовать регулярные выражения для соответствия введенному номеру телефона с шаблоном, который вы задаете в regexp.

php имеет функции ereg и preg_match(). Я бы предложил использовать preg_match(), так как там больше документации для этого стиля регулярного выражения.

Пример

$phone = '000-0000-0000';

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

Ответ 2

Вот как я нахожу действительные 10-значные номера телефонов США. На этом этапе я предполагаю, что пользователь хочет мой контент, поэтому самим цифрам доверяют. Я использую приложение, которое в конечном итоге отправляет SMS-сообщение, поэтому я просто хочу, чтобы необработанные номера не имели значения. Форматирование всегда можно добавить позже

//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 probably valid.
if (strlen($justNums) == 10) $isPhoneNum = true;

Изменить: мне пришлось переносить это на Java, если кому-то интересно. Он работает на каждом нажатии клавиши, поэтому я старался держать его достаточно легким:

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 there
  if (str.length() == 11) str = str.replaceAll("^1", "");

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

Ответ 3

В значительной степени зависит от того, какие форматы чисел вы хотите поддерживать, и насколько строго вы хотите обеспечить группировку чисел, использование пробелов и других разделителей и т.д.

Взгляните на этот похожий вопрос, чтобы получить некоторые идеи.

Тогда есть E.164, который является стандартной рекомендацией для нумерации ITU-T