php将URL长链接转换短链接的两种方法
|
短网址(Short URL) ,顾名思义就是在形式上比较短的网址。在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。 实现原理1)将长网址md5生成32位签名串,分为4段,每段8个字节; 2)对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理; 3)这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串; 4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址; 实现方法方法一: function shortUrl($url){ $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($url); $hexLength = strlen($hex); $subHexLen = $hexLength / 8; $output = array(); for ($i = 0; $i < $subHexLen; $i++) { //每循环一次取到8位 http://www.manongjc.com $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; } 方法二: function shortUrl2($url){ $result = sprintf("%u",crc32($url)); $show = ''; while($result >0){ $s = $result % 62; if($s > 35){ $s=chr($s+61); }elseif($s>9 && $s<=35){ $s=chr($s+55); } $show .= $s; $result = floor($result / 62); } return $show; } echo shortUrl2('http://www.manongjc.com'); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
