Conversion en base 62

WRInaute occasionnel
La fonction que tout le monde attendais (lol)
coucou, je vous présente une fonction qui convertis un entier en base 62, et qui convertis une chaine [A-Za-z0-9]+ en un entier. Vous pouvez modifier l'alphabet a votre guise... Attention dans touts les cas les 2 arguments doivent être des chaînes de caractères.
ENCODER : base62('557','encode');
DECODER : base62('TesT','decode');

Il n'y a pas ou presque pas de limite sur la taille des nombres et de la chaîne :
Code:
function base62($a,$z='encode'){$a=(string) $a;$alphabet='aTe9qDUMlIRXv4stWuFyOpH8SwQ67nAxG5dbkLfV1imzZJcjoCKhYgP203NBrE';if ($z=='encode'){$b=$a;if (intval($b)<62) $r=$alphabet[intval($a)]; else {while (gmp_cmp($b,'1')>0) {$c++;$b=gmp_div_q($b,'62');}for ($i=$c; $i>=0; $i--) {$b=gmp_pow('62',$i);$c=gmp_div_q($a,$b);$a=gmp_sub($a,gmp_mul($b,$c));$r.=$alphabet[gmp_strval($c)];}}return preg_replace('#^'.$alphabet[0].'+#','',$r);}else{$r=$a;$a=strlen($r);$b='0';for ($i=0;$i<$a;$i++) {$b=gmp_add($b,gmp_mul(strpos($alphabet,$r[$i]),gmp_pow('62',$a-1-$i)));}return gmp_strval($b);}}
voici la démo:
Code:
echo base62('SalutVoiciUneFonctionSympaBonneJourneeWRI','decode');
echo '<br>';
echo base62('11910165319283751595642765004847352139839753636537142163964864415068284325','encode');
qui produit ceci :
11910165319283751595642765004847352139839753636537142163964864415068284325
SalutVoiciUneFonctionSympaBonneJourneeWRI

Peace...
 
WRInaute occasionnel
essaye de convertir 3141592654 en base 64 avec base64_encode et avec ma fonction :
RESULTAT :
base64_encode(3141592654) retourne MzE0MTU5MjY1NA==
base62(3141592654) retourne 9QLCjW

tu avoueras que ma fonction est bien plus adaptée pour convertir des nombres, car elle prend environ 2,5 fois moins de caractères... je ne vois pas l'utilité d'encoder en base 64 si la transcription d'un nombre est plus longue que le nombre lui même...

Peace
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut