strtolower($domain), 'isTransitionalDifferent' => false, 'errors' => 0]); } self::supportsIdna(); /* @param-out array{errors: int, isTransitionalDifferent: bool, result: string} $idnaInfo */ idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $idnaInfo); /** @var array{result:string, isTransitionalDifferent:bool, errors:int} $idnaInfo */ $info = IdnaInfo::fromIntl($idnaInfo); if (0 !== $info->errors()) { throw SyntaxError::dueToIDNAError($domain, $info); } return $info; } /** * Converts the input to its IDNA UNICODE form. * * This method returns the string converted to IDN UNICODE form */ public static function toUnicode(string $domain, int $options): IdnaInfo { if (!str_contains($domain, 'xn--')) { return IdnaInfo::fromIntl(['result' => $domain, 'isTransitionalDifferent' => false, 'errors' => 0]); } self::supportsIdna(); /* @param-out array{errors: int, isTransitionalDifferent: bool, result: string} $idnaInfo */ idn_to_utf8($domain, $options, INTL_IDNA_VARIANT_UTS46, $idnaInfo); /** @var array{result:string, isTransitionalDifferent:bool, errors:int} $idnaInfo */ $info = IdnaInfo::fromIntl($idnaInfo); if (0 !== $info->errors()) { return IdnaInfo::fromIntl(['result' => $domain, 'isTransitionalDifferent' => false, 'errors' => 0]); } return $info; } }