生成短网址的思路以及使用php生成短网址的实现方法。

生成短网址的思路:如果把短网址还原了,你知道是个什么样子的吗?比如:
http://www.jbxue.com/sitejs-17300-1.html
对于以上这个链接,除了直接打开之外,还有一种方法打开它,如下:
http://www. jbxue.com/link.php?url=http://www.jbxue.com/sitejs-17300-1.html
好了,短网址还原了实际就是这个样子的了,可能你看到新浪微博应用里面的短网址都是这个样子:
http://t.cn/zHEYrvV
其实他还原了说不定就是这个样子:
http://t.cn/link.php?url=http://www.jbxue.com/sitejs-17300-1.html
好了,这里就说到第二步了,如何将
http://t.cn/link.php?url=http://www.jbxue.com/sitejs-17300-1.html
缩成
http://t.cn/zHEYrvV
这个地方需要用到url重写,按照本例则可以这么重写:
RewriteEngine On 
RewriteBase / 
RewriteRule ^/(.*)$ link.php?url=$1[L] 
这里就实现了将 http://t.cn/link.php?url=zHEYrvV 转换为了 http://t.cn/zHEYrvV ,缩短了不少,那么如何通过 zHEYrvV 去查找到 http://www.jbxue.com/sitejs-17300-1.html 这个网址并跳到这个网址上去呢?这里就用到了一个类似加密的算法了,通过算法将所有的长网址缩短成一个对应的5-6位的并且唯一字符串,并将这个对应关系存入到数据库中去。结合本例就是根据传入的参数 zHEYrvV 到数据库中去找对应的网址,找到了就 header 跳转过去。
ok,至于生成短网址的思路就是这个样子的了。

通过php生成短网址的那个过程(这里将长网址生成短至5-6位字符长度并且还需要是唯一的):

<?php
function code62($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;
} // www.jbxue.com
function shorturl($url){
$url=crc32($url);
$result=sprintf("%u",$url);
return code62($result);
}

比如

echo shorturl('http://www.jbxue.com/'); 
将生成的一个唯一对应码为 n2Q8e 。

php生成短网址的思路与方法的更多相关文章

  1. PHP调用百度api生成短网址&根据短网址恢复长网址

    接口api文档地址:http://dwz.cn/#/apidoc?_k=i9ev5p 代码demo header("Content-type: text/html; charset=utf- ...

  2. php 生成短网址 代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. C#:生成短网址

    /// <summary> /// 短网址应用 ,例如QQ微博的url.cn http://url.cn/2hytQx /// </summary> /// <param ...

  4. 仿微博php生成短网址

    html code <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  5. php 两种短网址生成方法

    使用以下PHP代码可以生成唯一的6位的短网址. 代码如下: <?php //生成短网址方法1 function shortUrl1($url) { if (empty($url)) { retu ...

  6. PHP生成短连接的方法

    PHP生成短连接的方法.md PHP生成短连接的方法 直接贴上方法,函数可以查看手册. <?php /** 生成短网址 * @param String $url 原网址 * @return St ...

  7. 短网址url接口api,url短链接(t.cn、url.cn)生成

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

  8. 短网址(t.cn、url.cn)生成,网址缩短接口API

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

  9. Leetcode刷题记录:编码并解码短网址

    题目要求 编写一个类,提供两个方法.一个可以将普通的网址编码成短网址,一个可以将短网址还原为普通网址. 参考题解 # 使用随机函数,生成短网址,保存在dict中,避免重复 import random ...

随机推荐

  1. 转:MongoDB调查总结

    与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问速度:举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值 ...

  2. MYSQL用SOURCE命令时导入乱码的问题解决

    现在遇到了,但记得上次辉哥说过的方法,在MYSQL命令行里输入: set names utf8; 再执行SOURCE命令,搞定!

  3. python里的Join函数

    用法是将数组里的每个元素用字符连接起来 import string string.join(["aaaa", "bbb"]) 或者: from string i ...

  4. -_-#【Better JS Code】插入迭代值

    +function() { var i = 0 var values = ['xiaoming', 'xiaohong'] var name = values[i] i++ console.log(n ...

  5. 【转】HashMap和HashSet的区别

    原文网址:http://www.importnew.com/6931.html HashMap和HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的 ...

  6. Shell遍历文件,对每行进行正则匹配

    Shell查看文件的最后5行,并对每行进行正则匹配,代码如下: #!/bin/sh pattern="HeartBeat" /home/test/log/log_20150205. ...

  7. HDU 4604 Deque 最长子序列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4604 Deque Time Limit: 4000/2000 MS (Java/Others)     ...

  8. F - Truck History - poj 1789

    有一个汽车公司有很多年的汽车制造历史,所以他们会有很多的车型,现在有一些历史学者来研究他们的历史,发现他们的汽车编号很有意思都是有7个小写字母组成的,而且这些小写字母具有一些特别的意义,比如说一个汽车 ...

  9. SQL中Merge的用法

    SQL中Merge的用法 Merge的用法 Merge可以完成以下功能: 1.  两个表之间数据的更新 2.  进行进销存更新库存 3.  进行表之间数据的复制 语法说明: 1.  在语句结束后一定要 ...

  10. jquery cycle pugin

    插件地址: http://jquery.malsup.com/cycle/ <div id="propaganda"><div id="pgdImg&q ...