文档章节

PHP 实现短url代码

刘德生
 刘德生
发布于 2014/06/02 17:14
字数 123
阅读 885
收藏 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
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
微薄短地址的实现-python

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

java-苦苦甜甜
2012/11/22
0
1

没有更多内容

加载失败,请刷新页面

加载更多

解决各浏览器向url中传中问参数的问题

https://www.cnblogs.com/godtrue/p/4333262.html 后台的处理代码 public static String getUrlnewName( String oldName) {String newName = "";try {String agent = inv.get......

踏破铁鞋无觅处
26分钟前
1
0
微信支付携带证书请求

package utils.wechat; import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.KeyStore; import javax.net.ssl.SSLContext;......

猿神出窍
34分钟前
2
0
1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s

1093 - You can't specify target table 'xxx' for update in FROM clause, Time: 0.002000s 根据结果集在b_order_copy1 表中删除 DELETE FROM b_order_copy1 WHERE Id in ( SELECT Id FRO......

lwenhao
34分钟前
1
0
JavaScriptCore全面解析

本文由云+社区发表 作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者 JavaScript越来越多地出现在我们客户端开发的视野中,从ReactNative到JSpatch,JavaScript与客户端相...

腾讯云加社区
38分钟前
1
0
Jmeter参数的AES加密使用

在Jmeter日常实践中,大家应该都遇到过接口传参需要加密的情况。以登陆为例,用户名和密码一般都需要进行加密传输,在服务端再进行解密,这样安全系数会更高,但在使用jmeter进行接口测试的时...

程序猿拿Q
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部