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