lib/Punycode.php
protected static function encodePart(&$input)
    {
        $codePoints = &static::codePoints($input);

        $n = static::INITIAL_N;
        $bias = static::INITIAL_BIAS;
        $delta = 0;
        $h = $b = count($codePoints['basic']);

        $output = static::getString($codePoints['basic']);

        if ($input === $output) {
            return $output;
        }

        if ($b > 0) {
            $output .= static::DELIMITER;
        }

        $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
        sort($codePoints['nonBasic']);

        $i = 0;
        $length = $codePoints['length'];

        while ($h < $length) {
            $m = $codePoints['nonBasic'][$i++];
            $delta = $delta + ($m - $n) * ($h + 1);
            $n = $m;

            foreach ($codePoints['all'] as $c) {
                if ($c < $n || $c < static::INITIAL_N) {
                    $delta++;
                }
                if ($c === $n) {
                    $q = $delta;
                    for ($k = static::BASE;; $k += static::BASE) {
                        $t = static::calculateThreshold($k, $bias);

                        if ($q < $t) {
                            break;
                        }

                        $code = $t + (($q - $t) % (static::BASE - $t));
                        $output .= static::$encodeTable[$code];

                        $q = ($q - $t) / (static::BASE - $t);
                    }

                    $output .= static::$encodeTable[$q];
                    $bias = static::adapt($delta, $h + 1, ($h === $b));
                    $delta = 0;
                    $h++;
                }
            }

            $delta++;
            $n++;
        }

        return static::PREFIX . $output;
    }
protected static function encodePart(&$input)
    {
        $codePoints = &static::codePoints($input);

        $n = static::INITIAL_N;
        $bias = static::INITIAL_BIAS;
        $delta = 0;
        $h = $b = count($codePoints['basic']);

        $output = static::getString($codePoints['basic']);

        if ($input === $output) {
            return $output;
        }

        if ($b > 0) {
            $output .= static::DELIMITER;
        }

        $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
        sort($codePoints['nonBasic']);

        $i = 0;
        $length = $codePoints['length'];

        while ($h < $length) {
            $m = $codePoints['nonBasic'][$i++];
            $delta = $delta + ($m - $n) * ($h + 1);
            $n = $m;

            foreach ($codePoints['all'] as $c) {
                if ($c < $n || $c < static::INITIAL_N) {
                    $delta++;
                }
                if ($c === $n) {
                    $q = $delta;
                    for ($k = static::BASE;; $k += static::BASE) {
                        $t = static::calculateThreshold($k, $bias);

                        if ($q < $t) {
                            break;
                        }

                        $code = $t + (($q - $t) % (static::BASE - $t));
                        $output .= static::$encodeTable[$code];

                        $q = ($q - $t) / (static::BASE - $t);
                    }

                    $output .= static::$encodeTable[$q];
                    $bias = static::adapt($delta, $h + 1, ($h === $b));
                    $delta = 0;
                    $h++;
                }
            }

            $delta++;
            $n++;
        }

        return static::PREFIX . $output;
    }
protected static function encodePart ( & $ input ) { $ codePoints = & static :: codePoints ( $ input ) ; $ n = static :: INITIAL_N ; $ bias = static :: INITIAL_BIAS ; $ delta = 0 ; $ h = $ b = count ( $ codePoints [ 'basic' ] ) ; $ output = static :: getString ( $ codePoints [ 'basic' ] ) ; if ( $ input === $ output ) { return $ output ; } if ( $ b > 0 ) { $ output .= static :: DELIMITER ; } $ codePoints [ 'nonBasic' ] = array_unique ( $ codePoints [ 'nonBasic' ] ) ; sort ( $ codePoints [ 'nonBasic' ] ) ; $ i = 0 ; $ length = $ codePoints [ 'length' ] ; while ( $ h < $ length ) { $ m = $ codePoints [ 'nonBasic' ] [ $ i ++ ] ; $ delta = $ delta + ( $ m - $ n ) * ( $ h + 1 ) ; $ n = $ m ; foreach ( $ codePoints [ 'all' ] as $ c ) { if ( $ c < $ n || $ c < static :: INITIAL_N ) { $ delta ++ ; } if ( $ c === $ n ) { $ q = $ delta ; for ( $ k = static :: BASE ; ; $ k += static :: BASE ) { $ t = static :: calculateThreshold ( $ k , $ bias ) ; if ( $ q < $ t ) { break ; } $ code = $ t + ( ( $ q - $ t ) % ( static :: BASE - $ t ) ) ; $ output .= static :: $ encodeTable [ $ code ] ; $ q = ( $ q - $ t ) / ( static :: BASE - $ t ) ; } $ output .= static :: $ encodeTable [ $ q ] ; $ bias = static :: adapt ( $ delta , $ h + 1 , ( $ h === $ b ) ) ; $ delta = 0 ; $ h ++ ; } } $ delta ++ ; $ n ++ ; } return static :: PREFIX . $ output ; }
Encode a part of a domain name, such as tld, to its Punycode version

@param string $input Part of a domain name
@return string Punycode representation of a domain part
Encode a part of a domain name such as tld to its Punycode version