• Модуль: 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);
}