生成短链接

<?php
namespace commonhelpers;

/**
 * 字符串助手
 */
class StringHelper extends yiihelpersStringHelper
{
    /** 
     * 10进制转为62进制 
     *  
     * @param integer $n 10进制数值 
     * @return string 62进制 
     */  
    public static function dec62($n) {  
        $base = 62;  
        $index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
        $ret = '';  
        for($t = floor(log10($n) / log10($base)); $t >= 0; $t --) {  
            $a = floor($n / pow($base, $t));  
            $ret .= substr($index, $a, 1);  
            $n -= $a * pow($base, $t);  
        }  
        return $ret;  
    }   
      
    /** 
     * 62进制转为10进制 
     * 
     * @param integer $n 62进制 
     * @return string 10进制 
     */  
    public static function dec10($s) {  
        $base = 60;  
        $index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
        $ret = 0;  
        $len = strlen($s) - 1;  
        for($t = 0; $t <= $len; $t ++) {  
            $ret += strpos($index, substr($s, $t, 1)) * pow($base, $len - $t);  
        }  
        return $ret;  
    }

    /**
     * 短链接
     * @param  string $url 长链接(长字符串)
     * @return string      短链接
     */
    public static function urlShort($url)
    {
        $url= crc32($url); 
        $result= sprintf("%u", $url);
        return self::dec62($result);
    }
}

PS:原文链接忘记了,我自己整合到Yii中

原文地址:https://www.cnblogs.com/tujia/p/10535153.html