文档章节

PHP 实现短url代码

刘德生
 刘德生
发布于 2014/06/02 17:14
字数 123
阅读 883
收藏 4

<?php


function shortUrl($url)

{

$md5_str = md5($url);

$md5_arr = str_split($md5_str,16);

$ret = array();

$seed_arr = array_merge(range('a','z'),range(0,9),range('A','Z'));

$seed_len = count($seed_arr);


foreach($md5_arr as $str){

 $bin = strTobin($str);

 $bin_len = strlen($bin);

 $avg_len = ceil($bin_len/6);

 $bin_arr = str_split($bin,$avg_len);

 $tmp_str = '';

 foreach($bin_arr as $bin){

 $index = bindec($bin)%$seed_len;

 $tmp_str .= $seed_arr[$index];

 }


 $ret[] = $tmp_str;


}


print_r($ret);


 }




function strTobin($str)

{

$bin = '';

for($i=0,$len=strlen($str);$i<$len;$i++){

     $bin .= str_pad(base_convert($str{$i}, 16, 2),4,'0', STR_PAD_LEFT);

     }


     return $bin;

}

$url = 'http://wenku.baidu.com/link?url=rvpWe98e3D2-W70FO6G_LB2WyElgeTNsGwKWSakl5MJu-EaVPd5r39l7-5ngTNdxi2Yp1FX6A4-neb-MNKCApJKwl9tVYkCN4lMpxuHBvdq';

shortUrl($url);


© 著作权归作者所有

共有 人打赏支持
刘德生
粉丝 6
博文 31
码字总数 7734
作品 0
海淀
高级程序员
微博URL短网址生成算法原理及(java版、php版实现实例)

短网址(Short URL),顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代...

小老傅
2014/08/20
0
5
微博短链接解析ShortUrl【PHP代码实现】

一、背景简介 短网址应用已经在各大微博上开始流行了起来。例如QQ微博的url.cn,新浪的sinaurl.cn等。我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn...

幸福的猫猫
2013/03/07
0
1
微薄短地址的实现-python

几乎所有的微薄都提供了缩短网址的服务,其原理就是将一个url地址按照一定的算法生成一段字符串,然后加在一个短域名后面边成了一个新的url地址,数 据库中会存放这个短地址和原始的地址,当...

java-苦苦甜甜
2012/11/22
0
1
URL短地址压缩算法 微博短地址原理解析 (Java实现)

最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C#的算法,有.Net的算法,有PHP的算法,就是没有找到Java版的短网址(ShortUrl)的算法,很是郁闷。同时还发现有...

神勇小白鼠
2014/07/29
0
0
php curl 获取google短地址问题解决

我们有个类微博应用 背景:测试员说其发表内容中链接应该是可点击的短链接 简单调试发现:在本地和服务器上都能获取到链接的短地址,唯独内网的测试地址: 192.168.1.111:81/app 不能获取短地...

qingfeng哥
2012/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring IOC 之 注册 BeanDefinition

获取 Document 对象后,会根据该对象和 Resource 资源对象调用 registerBeanDefinitions() 方法,开始注册 BeanDefinitions 首先调用 createBeanDefinitionDocumentReader() 方法实例化 Bean...

职业搬砖20年
20分钟前
1
0
Pycahrm左边出现一些bookmark的取消方法

pycharm 左边出一个对号或则一个0,放上去提示Bookmark 取消方法:按F11

鹏灬
23分钟前
0
0
JDK1.8使用Dubbo时需注意

Dubbo自带的很多包都比较旧了,其中的javassist在JDK1.8上运行会报错 而且错误通常比较诡异,javassist是编辑和创建Java字节码的类库,常见的错误会从spring中报出 解决办法: <dependency>...

火龙战士
25分钟前
1
0
Java 对Oracle数据库中的 BLOB类型 插入图片

package test;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.PrintStream;import java.sql.Connection;import java.sql.DriverManager;......

青峰Jun19er
27分钟前
0
0
awk复习

10月22日任务 复习 awk调用外部变量 -v参数设置内部变量调用外部变量 [root@test awk]# a=44[root@test awk]# echo "ABCD" | awk -v GET_A=$a '{print GET_A}'44 更复杂的应用: [root@...

robertt15
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部