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