Как проверить номер телефона с помощью php
Как проверить номер телефона с помощью PHP?
Ответ 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