Maison > php教程 > PHP源码 > php生成短网址|bcmath|base62.class.php

php生成短网址|bcmath|base62.class.php

PHP中文网
Libérer: 2016-05-25 17:02:32
original
1417 Les gens l'ont consulté

$base62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
将一个合理的数值大小通过一个与base62这样的字串的“映射”做成的hash散列字串
用到了扩展函数bcmath,目的在于可以支持较为更大的数值大小,最大在:99999999999999
Base62::encode(99999999999999);
Base62::decode();

php代码

class Base62{
     
    private static $base62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
     
    public static function encode($number, $encode = ''){
        while($number > 0){
            $mod = bcmod($number, 62);
            $encode .= self::$base62[$mod];
            $number = bcdiv(bcsub($number, $mod), 62);
             
        }
        return strrev($encode);
    }
     
    public static function decode($encode, $number = 0){
        $length = strlen($encode);
        $baselist = array_flip(str_split(self::$base62));
        for($i = 0; $i < $length; $i++){
            $number = bcadd($number, bcmul($baselist[$encode[$i]],  bcpow(62, $length - $i - 1)));
        }   
        return $number;     
    }
     
}
Copier après la connexion
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal