• Модуль: location
  • Путь к файлу: ~/bitrix/modules/location/lib/entity/address/converter/stringtemplateconverter.php
  • Класс: BitrixLocationEntityAddressConverterStringTemplateConverter
  • Вызов: StringTemplateConverter::parseFieldName
private function parseFieldName(array $context): array
{
	$fieldNameStartPosition = $context['position'];
	$matches = null;
	//          [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]]
	// Are looking for  ^^^^^^^^^^^^^^^^
	if ($context['address'] instanceof Address
		&& preg_match(
			'/' . self::REGEX_GROUP_FIELD_NAME . '/ms' . BX_UTF_PCRE_MODIFIER,
			$context['template'],
			$matches,
			PREG_OFFSET_CAPTURE,
			$context['position']
		)
		&& $matches[0][1] === $fieldNameStartPosition
	)
	{
		$context['position'] = $fieldNameStartPosition + strlen($matches[0][0]);
		list($fieldName, $fieldModifiers) = $this->splitFieldName($matches[0][0]);
		$fieldValue = $this->getAddressFieldValue($context['address'], $fieldName, $fieldModifiers);
		$context['info'] = [
			'type' => 'field',
			'position' => $fieldNameStartPosition,
			'end' => $context['position'],
			'modifiers' => $fieldModifiers,
			'name' => $fieldName,
			'value' => $fieldValue,
		];
	}
	else
	{
		$this->addContextError($context, self::ERR_PARSE_GROUP_FIELD_NAME, $fieldNameStartPosition);
	}

	return $context;
}