3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * Кодирует число в буквенно-числовую последовательность. * * @param int $number Число для кодирования. * @return string Закодированная буквенно-числовая последовательность. */ function encodeNumber(int $number): string { // Символы, используемые для кодирования $charset = join('', [...range('a', 'z'), ...range('A', 'Z'), ...range(0, 9)]); $base = strlen($charset); // Определение основания системы счисления $encoded = ''; // Преобразование числа в заданную систему счисления while ($number > 0) { $remainder = $number % $base; $encoded = $charset[$remainder] . $encoded; $number = (int) ($number / $base); } return $encoded; } /** * Декодирует буквенно-числовую последовательность в число. * * @param string $encoded Закодированная буквенно-числовая последовательность. * @return int Декодированное число. */ function decodeNumber(string $encoded): int { $charset = join('', [...range('a', 'z'), ...range('A', 'Z'), ...range(0, 9)]); $base = strlen($charset); $decoded = 0; // Преобразование буквенно-числовой последовательности в число $length = strlen($encoded); for ($i = 0; $i < $length; $i++) { $value = strpos($charset, $encoded[$i]); $decoded = $decoded * $base + $value; } return $decoded; } $numbers = [56789, 89567, 129087, 9999999, 1e8]; // Кодирование чисел и вывод закодированных значений foreach ($numbers as $number) { $encoded = encodeNumber($number); echo "$number: '$encoded' -> '" . decodeNumber($encoded) . "'\n"; }
Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
56789: 'oV7' -> '56789' 89567: 'xsN' -> '89567' 129087: 'HKd' -> '129087' 9999999: 'P7Ct' -> '9999999' 100000000: 'gVKJo' -> '100000000'

preferences:
97.69 ms | 402 KiB | 89 Q