- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/phonenumber/parser.php
- Класс: BitrixMainPhoneNumberParser
- Вызов: Parser::stripCountryCode
static function stripCountryCode(&$phoneNumber, $countryMetadata)
{
$countryCode = $countryMetadata['countryCode'];
if(mb_strpos($phoneNumber, $countryCode) !== 0)
return false;
$possibleLocalNumber = mb_substr($phoneNumber, mb_strlen($countryCode));
$nationalNumberRegex = '/^(?:' . $countryMetadata['generalDesc']['nationalNumberPattern'] . ')$/';
if(!preg_match($nationalNumberRegex, $phoneNumber) && preg_match($nationalNumberRegex, $possibleLocalNumber))
{
/*
If the original number (before stripping national prefix) was viable, and the resultant number is not,
then prefer the original phone number. This is because for some countries (e.g. Russia) the same digit
could be both a national prefix and a leading digit of a valid national phone number, like `8` is the
national prefix for Russia and both `8 800 555 35 35` and `800 555 35 35` are valid numbers.
*/
$phoneNumber = $possibleLocalNumber;
return true;
}
return false;
}