您当前的位置: 首页 > 网站编程 > PHP教程 > 微博短链接算法PHP版本

微博短链接算法PHP版本

作者:不详 来源:网络 发布时间: 2014-08-21 17:42 点击:
思路: 1)将长网址md5生成32位签名串,分为4段,每段8个字节; 2)对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理; 3)这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串; 4)总的md5串

微博短链接算法PHP版本

  思路:

  1)将长网址md5生成32位签名串,分为4段,每段8个字节;

  2)对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理;

  3)这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串;

  4)总的md5串可以获得4个6位串;取里面的任意一个就可作为这个长url的短url地址;

  下面是PHP代码:

  function shorturl($url='', $prefix='', $suffix='') {

  $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($prefix.$url.$suffix);

  $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;

  }

  $urls = shorturl('http://www.php100.com');

  var_dump($urls);
分享到:
本文"微博短链接算法PHP版本"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4