Вы можете проанализировать ввод в целое число, а затем проверить правильность количества цифр;
$mobileNumber = intval($mobileNumber);
if (preg_match('/(^\d{12}$)|(^\d{10}$)/',$mobileNumber)==TRUE) {
//number has the right number of digits for a UK mobile number
} else {
//number does not have the right number of digits
}
Объяснено;
$ mobileNumber = intval ($ mobileNumber);
При этом удаляются все нечисловые символы из строки и начальный ноль (например, пробелы, скобки, знаки плюс, десятичные дроби и т. Д.);
* if (preg_match ('/ (^\ d {12} $) | (^ \ d {10} $) / ', $ mobileNumber) == TRUE) {*
Затем это регулярное выражение проверяет, что строка содержит 12 или 10 цифр, которыебудет охватывать 447712345678 (12 цифр) или 7791234567 (10 цифр).Он сопоставляется в двух подпунктах (^ \ d {12} $) или (^ \ d {10} $), которые представляют караты (^) и доллар ($), чтобы соответствовать всему с самого начала (^) и досамый конец ($) строки.\ d представляет любую цифру, а следующие {12} средства соответствуют предыдущему выражению столько раз.
Это не означает, что число является действительным, вы можете использовать API, такой как twillio, для дополнительной проверкичисла https://www.twilio.com/help/faq/sms/does-twilio-check-to-see-if-phone-numbers-can-receive-sms
Например;
$mobileNumber = '+447791234567';
$mobileNumber = intval($mobileNumber); //$mobileNumber is now 447791234567
if (preg_match('/(^\d{12}$)|(^\d{10}$)/',$mobileNumber)==TRUE) {
//$mobileNumber matches (^\d{12}$) and is valid
}
Вы также можете добавить проверку, чтобы убедиться, что номер начинается с «07» или «447», что требуется для мобильных телефонов в Великобритании,вот так;
function isValidMobile($aNumber){
$aNumber = intval($aNumber);
return preg_match('/(^\d{12}$)|(^\d{10}$)/', $aNumber) && preg_match('/(^7)|(^447)/', $aNumber);
}
intval удаляет ведущий ноль, поэтому регулярное выражение проверяет наличие 7 или 447.