WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn

Idn::punycodeEncode() private Yoast 1.0

{} Это метод класса: Idn{}

Хуков нет.

Возвращает

Строку.

Использование

$result = Idn::punycodeEncode( $input );
$input(строка) (обязательный)

Заметки

Код Idn::punycodeEncode() Yoast 15.1.1

<?php
private static function punycodeEncode($input)
{
    $n = self::INITIAL_N;
    $delta = 0;
    $out = 0;
    $bias = self::INITIAL_BIAS;
    $inputLength = 0;
    $output = '';
    $iter = self::utf8Decode($input);
    foreach ($iter as $codePoint) {
        ++$inputLength;
        if ($codePoint < 0x80) {
            $output .= \chr($codePoint);
            ++$out;
        }
    }
    $h = $out;
    $b = $out;
    if ($b > 0) {
        $output .= self::DELIMITER;
        ++$out;
    }
    while ($h < $inputLength) {
        $m = self::MAX_INT;
        foreach ($iter as $codePoint) {
            if ($codePoint >= $n && $codePoint < $m) {
                $m = $codePoint;
            }
        }
        if ($m - $n > \intdiv(self::MAX_INT - $delta, $h + 1)) {
            throw new \Exception('Integer overflow');
        }
        $delta += ($m - $n) * ($h + 1);
        $n = $m;
        foreach ($iter as $codePoint) {
            if ($codePoint < $n && 0 === ++$delta) {
                throw new \Exception('Integer overflow');
            } elseif ($codePoint === $n) {
                $q = $delta;
                for ($k = self::BASE;; $k += self::BASE) {
                    if ($k <= $bias) {
                        $t = self::TMIN;
                    } elseif ($k >= $bias + self::TMAX) {
                        $t = self::TMAX;
                    } else {
                        $t = $k - $bias;
                    }
                    if ($q < $t) {
                        break;
                    }
                    $qMinusT = $q - $t;
                    $baseMinusT = self::BASE - $t;
                    $output .= self::encodeDigit($t + $qMinusT % $baseMinusT, \false);
                    ++$out;
                    $q = \intdiv($qMinusT, $baseMinusT);
                }
                $output .= self::encodeDigit($q, \false);
                ++$out;
                $bias = self::adaptBias($delta, $h + 1, $h === $b);
                $delta = 0;
                ++$h;
            }
        }
        ++$delta;
        ++$n;
    }
    return $output;
}