<?php
define('ALNUM_MAP', str_split('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'));
define('DIGIT_MAP', array_flip(ALNUM_MAP));
function numToAlnum($num) {
return strtr($num, ALNUM_MAP);
}
function alnumToNum($alphaNum) {
return strtr($alphaNum, DIGIT_MAP);
}
$ids = ['4440', '464426', '43304441302845', '262018191701180', '273381111186152545352'];
foreach ($ids as $id) {
$idLength = strlen($id);
$alphaNum = numToAlnum($id);
$alNumLength = strlen($alphaNum);
$backToId = alnumToNum($alphaNum);
var_export(['original' => $id, 'encoded' => $alphaNum, 'decoded' => $backToId, 'reduction' => $idLength - $alNumLength]);
echo "\n---\n";
}
- Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- array (
'original' => '4440',
'encoded' => 'SO',
'decoded' => '4440',
'reduction' => 2,
)
---
array (
'original' => '464426',
'encoded' => 'USA',
'decoded' => '464426',
'reduction' => 3,
)
---
array (
'original' => '43304441302845',
'encoded' => 'RESPECT',
'decoded' => '43304441302845',
'reduction' => 7,
)
---
array (
'original' => '262018191701180',
'encoded' => 'Australia',
'decoded' => '262018191701180',
'reduction' => 6,
)
---
array (
'original' => '273381111186152545352',
'encoded' => 'BHills90210',
'decoded' => '273381111186152545352',
'reduction' => 10,
)
---
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array (
'original' => '4440',
'encoded' => 'SO',
'decoded' => '4440',
'reduction' => 2,
)
---
array (
'original' => '464426',
'encoded' => 'USA',
'decoded' => '464426',
'reduction' => 3,
)
---
array (
'original' => '43304441302845',
'encoded' => 'RESPECT',
'decoded' => '43304441302845',
'reduction' => 7,
)
---
array (
'original' => '262018191701180',
'encoded' => 'Australia',
'decoded' => '262018191701180',
'reduction' => 6,
)
---
array (
'original' => '273381111186152545352',
'encoded' => 'BHills90210',
'decoded' => '273381111186152545352',
'reduction' => 10,
)
---
preferences:
152.48 ms | 403 KiB | 181 Q