• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/punycode.php
  • Класс: CBXPunycode
  • Вызов: CBXPunycode::Encode
public function Encode($domainName)
{
	$this->ClearErrors();

	$domainName = mb_strtolower(trim($domainName));

	$scheme = "";
	$schemePosition = mb_strpos($domainName, "://");
	if ($schemePosition !== false)
	{
		$scheme = mb_substr($domainName, 0, $schemePosition);
		$domainName = mb_substr($domainName, $schemePosition + 3);
	}

	if ($this->encoding != "utf-8")
		$domainName = BitrixMainTextEncoding::convertEncoding($domainName, $this->encoding, "utf-8");

	$domainNameUcs4 = $this->Utf8ToUcs4($domainName);
	if (empty($domainNameUcs4))
		return "";

	$arDomainNameUcs4 = $this->ExplodeDomainName($domainNameUcs4);

	foreach ($arDomainNameUcs4 as $key => $value)
	{
		$checked = array_slice($value, 0, self::$punycodePrefixLength);
		if (self::$punycodePrefixUcs4 == $checked)
			continue;

		$arDomainNameUcs4[$key] = $this->NamePrepUcs4($value);
		if (!$arDomainNameUcs4[$key] || !is_array($arDomainNameUcs4[$key]))
			return false;

		$arDomainNameUcs4[$key] = $this->DoEncodeUcs4($arDomainNameUcs4[$key]);
	}

	$domainNameUcs4 = $this->ImplodeDomainName($arDomainNameUcs4);
	$domainName = $this->Ucs4ToUtf8($domainNameUcs4);

	if ($this->encoding != "utf-8")
		$domainName = BitrixMainTextEncoding::convertEncoding($domainName, "utf-8", $this->encoding);

	if (!empty($scheme))
		$domainName = $scheme."://".$domainName;

	return $domainName;
}