Валидация номера телефон с помощью библиотеки libphonenumber-for-php

PHP-библиотека для разбора, форматирования, хранения и проверки международных телефонных номеров. Эта библиотека основана на libphonenumber от Google.

Онлайн демо проверки номера телефона

Библиотека поддерживает версию PHP 5.3 до PHP 8.2 и выше.

Для начало установим библиотеку libphonenumber-for-php в наш проект используя composer

	
composer require giggsey/libphonenumber-for-php

Подключаем библиотеку в проект сайта, FCPATH путь корневой директории вашего сайта.

	
include_once(FCPATH.'/vendor/autoload.php');
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();

Начинаем проверку валидации номера, сперва проверим что номер можно использовать с помощью функции isPossibleNumber()

	
$number = '+41446681800';
$isPossibleNumber = $phoneUtil->isPossibleNumber($number);

isValidNumber — получает объект информации о номере и проверяет номер на валидность, чтобы получить информацию о объекте используем $phoneUtil->parse($number) , возвращает true или false.

Если номер валидный вернем функции номер в формате //+41446681800

	
$number = '+41446681800';
$isPossibleNumber = $phoneUtil->isPossibleNumber($number);
if($isPossibleNumber){
	$swissNumberProto = $phoneUtil->parse($number);
	$isValid = $phoneUtil->isValidNumber($swissNumberProto);
	if(!$isValid){
	$response = array('error' => 'Error!', 'status' => false);
	} else {
	$response = array('number' => $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::E164));
	}
} else {
$response = array('error' => 'Error!', 'status' => false);
}

Функция checkNumberPhone полностью:

	
function checkNumberPhone($number) {
	$response = true;
	include_once(FCPATH.'/vendor/autoload.php');
	$swissNumberStr = $number;
	$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
	try {
		$isPossibleNumber = $phoneUtil->isPossibleNumber($number);
		if($isPossibleNumber){
			$swissNumberProto = $phoneUtil->parse($number);
			$isValid = $phoneUtil->isValidNumber($swissNumberProto);
			if(!$isValid){
				$response = array('error' => 'Error!', 'status' => false);
			} else {
				$response = array('number' => $phoneUtil->format($swissNumberProto, 
				 \libphonenumber\PhoneNumberFormat::E164));
			}
		} else {
			$response = array('error' => 'Error!', 'status' => false);
		}
	} catch (\libphonenumber\NumberParseException $e) {
		error_log(print_r($e, true));
	}	
	return $response;
}

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии