Введение
Класс Bitrix\Main\PhoneNumber\Parser предоставляет функциональность для разбора и форматирования номеров телефонов в Битрикс D7. Давай рассмотрим его возможности на примерах.
1. Разбор номера телефона в объект
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
* @see bitrix/modules/main/lib/phonenumber/phonenumber.php
*/
$phone = '+7 (999) 999-99-99';
$parsedPhone = \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($phone);
2. Форматирование номера в формате E164 (+79999999999)
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$formattedE164 = $parsedPhone->format(\Bitrix\Main\PhoneNumber\Format::E164);
3. Форматирование номера в интернациональном формате (+7 999 999-99-99)
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$formattedInternational = $parsedPhone->format(\Bitrix\Main\PhoneNumber\Format::INTERNATIONAL);
4. Форматирование номера в национальном формате (8 (999) 999-99-99)
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$formattedNational = $parsedPhone->format(\Bitrix\Main\PhoneNumber\Format::NATIONAL);
5. Двухбуквенный код страны номера телефона (например, “RU”)
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$countryCode = $parsedPhone->getCountry();
6. Цифровой код страны номера телефона (например, “7”)
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$numericCountryCode = $parsedPhone->getCountryCode();
7. Получение страны по умолчанию из настроек (phone_number_default_country)
$defaultCountry = \Bitrix\Main\PhoneNumber\Parser::getDefaultCountry();
8. Получение страны по умолчанию из пользовательских настроек (phone_number)
$defaultCountry = \Bitrix\Main\PhoneNumber\Parser::getUserDefaultCountry();
9. Нормализация номера телефона одной строкой
/**
* @var string $phone
* @var string $normalizedPhone
*/
$normalizedPhone = \Bitrix\Main\PhoneNumber\Parser::getInstance()->normalizePhoneNumber($phone);
10. Проверка валидности номера телефона
/**
* @var \Bitrix\Main\PhoneNumber\PhoneNumber $parsedPhone
*/
$parsedPhone = \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($phone);
$isValid = $parsedPhone->isValid(); // true|false
11. Получение текущей страны
$сountry = \Bitrix\Main\PhoneNumber\Parser::detectCountry(); // RU