- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/phonenumber/formatter.php
- Класс: BitrixMainPhoneNumberFormatter
- Вызов: Formatter::formatNationalNumberWithOriginalFormat
static function formatNationalNumberWithOriginalFormat(PhoneNumber $number, $format)
{
$isInternational = $number->isInternational();
$replaceFormat = (isset($format['intlFormat']) && $isInternational) ? $format['intlFormat'] : $format['format'];
$patternRegex = '/' . $format['pattern'] . '/';
$nationalNumber = $number->getNationalNumber();
$countryMetadata = MetadataProvider::getInstance()->getCountryMetadata($number->getCountry());
$nationalPrefix = static::getNationalPrefix($countryMetadata, true);
$hasNationalPrefix = static::numberContainsNationalPrefix($number->getRawNumber(), $nationalPrefix, $countryMetadata);
if(!$isInternational && $hasNationalPrefix)
{
$nationalPrefixFormattingRule = static::getNationalPrefixFormattingRule($format, $countryMetadata);
if($nationalPrefixFormattingRule != '')
{
$nationalPrefixFormattingRule = str_replace(array('$NP', '$FG'), array($nationalPrefix, '$1'), $nationalPrefixFormattingRule);
$replaceFormat = preg_replace('/(\$\d)/', $nationalPrefixFormattingRule, $replaceFormat, 1);
}
else
{
$replaceFormat = $nationalPrefix . ' ' . $replaceFormat;
}
}
return preg_replace($patternRegex, $replaceFormat, $nationalNumber);
}