微博短链接解析ShortUrl
1.为什么用短链
短网址应用已经在各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。
我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/0nAcBW
为什么要这样做的,原因我想有这样几点:
1、微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了。
2、短网址可以在我们项目里可以很好的对开放级URL进行管理。有一部分网址可以会涵盖色情,暴力,广告等信息,这样我们可以通过用户的举报,完全管理这个连接将不出现在我们的应用中,应为同样的URL通过加密算法之后,得到的地址是一样的。
3、我们可以对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点,这样有利于我们对项目的后续工作更好的作出决策。
2.如何实现
下面先来看看短网址映射算法的理论(网上找到的资料)
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($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('prefix'.$input.'surfix');$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;
}
3. 输出结果
执行下面代码的结果如下,会产生4 组6 位字符串,任意一组都可以作为当前字符串的短链接地址。
print_r (shorturl(‘http://www.coosnow.com/shorturl.html’));
结果:
Array ( [0] => tytskv [1] => zrmsoa [2] => gwofej [3] => b2lyyr )
4. 跳转原理
当我们生成短链接之后,只需要在表中(数据库或者NoSql )存储原始链接与短链接的映射关系即可。当我们访问短链接时,只需要从映射关系中找到原始链接,即可跳转到原始链接。
微博短链接解析ShortUrl相关推荐
- php 短网址 算法,微博短链接算法PHP版本_php
思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...
- 微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- java短链接原理_微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- 微博短链接的生成算法(Java 版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就 ...
- Java实现还原微博短链接
依赖 <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --><dependency>&l ...
- URL短链接压缩算法 微博短链接原理解析
短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn,六度短网址6du.in等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如: ...
- php短连接解析,微博短链接算法php版本实现代码
思路: 1)将长网址md5生成32位签名串,分为4段, 每段8个字节; 2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理; 3 ...
- php版本算法,微博短链接算法PHP版本
)将长网址md 生成 位签名串 分为 段 每段 个字节 )对这四段循环处理 取 个字节 将他看成 进制串与 x fffffff( 位 )与操作 即超过 位的忽略处理 )这 位分成 段 每 位的数字作为 ...
- php解析短链接,PHP微博中短链接的算法举例
本节内容: 微博 短链接 实现思路: 1).将长网址md5生成32位签名串,分为4段, 每段8个字节: 2).对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操 ...
最新文章
- 2019 ACM - ICPC 全国邀请赛(南昌) 题解(9 / 12)
- Java基础:由JVM内存模型详解线程安全
- ecs 对比 本地服务器_ECS训练营Day03_SLB负载均衡实践 - 魔笔钨丝浣
- 喜报!第四范式助力宁波银行荣获2020 IDC数字化转型大奖
- boost::geometry::detail::overlay::get_ring用法的测试程序
- mc服务器音乐文件夹在哪,添加自定义音乐图文教程 我的世界怎么添加音乐
- 深度学习——02、深度学习入门 15-18
- python 遍历字典嵌套_Python 字典嵌套循环遍历
- python 自动点击上传以后上传文件,python使用selenium模拟点击网页实现自动导入上传文件功能...
- 我们是谁?前端开发者!
- [LeetCode]Power
- 使用useEffect常见问题!
- python pandas dataframe 不显示索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...
- java服务器测速_服务器测速,php在线测速
- Flink 与 Storm的对比
- systemctl重新加载_CentOS7利用systemctl添加自定义系统服务【转】
- 学计算机高中应该学什么科目,@所有高中生!新高考怎么选科?计算机类专业该怎么选科?...
- 计算机制作不同数据数据图表,数据图表与分析.doc
- 吴恩达团队盘点2019AI大势:自动驾驶寒冬、Deepfake已成魔
- 大学生电子设计大赛(内容有点多,细细看看,应该会有收获)