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