- Модуль: location
- Путь к файлу: ~/bitrix/modules/location/lib/entity/address/converter/stringtemplateconverter.php
- Класс: BitrixLocationEntityAddressConverterStringTemplateConverter
- Вызов: StringTemplateConverter::parseGroupDelimiter
private function parseGroupDelimiter(array $context): array
{
// Capturing the group's separator
$delimiterStartPosition = $context['position'];
// [", ", [ADDRESS_LINE_1:N,ADDRESS_LINE_2,"Text",LOCALITY,ADM_LEVEL_2]]
// Are looking for ^^^^
if (preg_match(
'/' . self::REGEX_GROUP_DELIMITER . '/ms' . BX_UTF_PCRE_MODIFIER,
$context['template'],
$matches,
PREG_OFFSET_CAPTURE,
$delimiterStartPosition
)
&& $matches[0][1] === $delimiterStartPosition
)
{
$context['info'] = [
'position' => $delimiterStartPosition,
'end' => $delimiterStartPosition + strlen($matches[0][0]),
'value' => $this->unescapeText(
substr(
$context['template'],
$delimiterStartPosition + 1,
strlen($matches[1][0]) - 2
)
),
];
$context['position'] = $context['info']['end'];
}
else
{
$this->addContextError($context, self::ERR_PARSE_GROUP_DELIMITER, $delimiterStartPosition);
}
return $context;
}