Как проверить номер телефона, используя php
Поскольку номера телефонов должны соответствовать шаблону, вы можете использовать регулярные выражения для соответствия введенному номеру телефона с шаблоном, который вы определяете в 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 }
Вот как я нахожу действительные 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's 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's there if (str.length() == 11) str = str.replaceAll("^1", ""); isPhoneNum = str.length() == 10; } Log.d("ISPHONENUM", String.valueOf(isPhoneNum));
Я сильно зависит от того, какие форматы чисел вы хотите поддерживать, и насколько строго вы хотите обеспечить группировку чисел, использование пробелов и других разделителей и т. Д ….
Взгляните на этот похожий вопрос, чтобы получить некоторые идеи.
Тогда есть E.164, который является стандартной рекомендацией по стандартизации от ITU-T