PHP 实现 短URL
作者 斯人 | 发布于 2012 年 3 月 24 日
PHP

两个PHP代码,
实现短URL的功能..
这里提供两个方法
方法1

function shorturl($input) {

  $base62 = array (

    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',

    'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',

    'q', 'r', 's', 't', 'u', 'v', 'w', 'x',

    'y', 'z', 'A','B','C','D','E','F','G',

    'H','I','J','K','L','M','N','O','P',

    'Q','R','S','T','U','V','W','X','Y',

    'Z','0', '1', '2', '3', '4', '5','6','7','8','9'

    );

  $hex = md5($input);

  $hexLen = strlen($hex);

  $subHexLen = $hexLen / 8;

  $output = array();

  for ($i = 0; $i < $subHexLen; $i++) {

    $subHex = substr ($hex, $i * 8, 8);

    $int = 0x3FFFFFFF & (1 * ('0x'.$subHex));

    $out = '';

 

    for ($j = 0; $j < 6; $j++) {

      $val = 0x0000003D & $int;

      $out .= $base62[$val];

      $int = $int >> 5;

    }

 

    $output[] = $out;

  }

 

  return $output;

}

$ret= shorturl('http://www.imsiren.com');

print_r($ret);

方法二:

function base62($x){
    $show='';
    while($x>0){
        $s=$x%62;
        if($s>35){
            $s=chr($s+61);
        }elseif($s>9&&$s<=35){
            $s=chr($s+55);
        }
        $show.=$s;
        $x=floor($x/62);
    }
            return $show;
}
function urlShort($url){
    $url=crc32($url);
    $res=sprintf('%u',$url);
    return base62($res);
}
echo urlShort("http://www.imsiren.com");

方法二 性能要高一些 用的 crc32 算法…
收藏下把.

原文出处:http://www.imsiren.com/archives/459