zoukankan      html  css  js  c++  java
  • php实现的短网址算法分享

    这篇文章主要介绍了php实现的短网址算法,理论上支持1,073,741,824个短网址,个人使用足够了,需要的朋友可以参考下

    每个网址用6个字符代替,(6^32) 最多可以拥有1,073,741,824个短网址。
    当然,你还可以记录更详细的信息,如访问记录,创建时间等。
    如果真不够用了,还可以删掉很久不用的。

    代码如下:
     
    function shorturl($input) {
      $base32 = 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', '0', '1', '2', '3', '4', '5'
        );
     
      $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 = 0x0000001F & $int;
          $out .= $base32[$val];
          $int = $int >> 5;
        }
     
        $output[] = $out;
      }
     
      return $output;
    }

    测试代码:

    代码如下:
    $input = 'http://www.jb51.net/1';
    $output = shorturl($input);
     
    echo "Input  : $input
    ";
    echo "Output : {$output[0]}
    ";
    echo "         {$output[1]}
    ";
    echo "         {$output[2]}
    ";
    echo "         {$output[3]}
    ";
    echo "
    ";
     
    $input = 'http://www.jb51.net/2';
    $output = shorturl($input);
     
    echo "Input  : $input
    ";
    echo "Output : {$output[0]}
    ";
    echo "         {$output[1]}
    ";
    echo "         {$output[2]}
    ";
    echo "         {$output[3]}
    ";
    echo "
    ";


    输出:代码如下:

    Input : http://www.jb51.net/1
    Output : h0xg4r
    bdr3tw
    osk2d3
    4azfqa
     
    Input : http://www.jb51.net/2
    Output : tm5kxb
    ceoj2s
    yw3dvl
    nrmrxl
  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/rxbook/p/6442894.html
Copyright © 2011-2022 走看看