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"; }

preferences:
33.95 ms | 402 KiB | 5 Q