• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/punycode.php
  • Класс: CBXPunycode
  • Вызов: CBXPunycode::ComposeKorean
private function ComposeKorean($input)
{
	$inputLength = count($input);
	if (!$inputLength)
		return [];

	$result = [];
	$last = (int) $input[0];
	$result[] = $last;

	for ($i = 1; $i < $inputLength; $i++)
	{
		$char = (int) $input[$i];
		$six = $last - 0xAC00;
		$lix = $last - 0x1100;
		$vix = $char - 0x1161;
		$tix = $char - 0x11A7;

		if ($six >= 0 && $six < 11172 && ($six % 28 == 0) && $tix >= 0 && $tix <= 28)
		{
			$last += $tix;
			$result[(count($result) - 1)] = $last;
			continue;
		}

		if ($lix >= 0 && $lix < 19 && $vix >= 0 && $vix < 21)
		{
			$last = 0xAC00 + ($lix * 21 + $vix) * 28;
			$result[(count($result) - 1)] = $last;
			continue;
		}

		$last = $char;
		$result[] = $char;
	}
	return $result;
}