php 生成短网址原理及代码


Posted in PHP onJanuary 23, 2014

php 生成短网址

原理:

1.将原网址做crc32校验,得到校验码。

2.使用sprintf('%u') 将校验码转为无符号数字。

3.对无符号数字进行求余62操作(大小写字母+数字等于62位),得到余数后映射到62个字符中,将映射后的字符保存。(例如余数是10,则映射的字符是A,0-9对应0-9,10-35对应A-Z,35-62对应a-z)

4.循环操作,直到数值为0。

5.将所有映射后的字符拼接,就是短网址后的code。

代码如下:

/** 生成短网址 
* @param String $url 原网址 
* @return String 
*/ 
function dwz($url){ $code = sprintf('%u', crc32($url)); 
$surl = ''; 
while($code){ 
$mod = $code % 62; 
if($mod>9 && $mod<=35){ 
$mod = chr($mod + 55); 
}elseif($mod>35){ 
$mod = chr($mod + 61); 
} 
$surl .= $mod; 
$code = floor($code/62); 
} 
return $surl; 
}
PHP 相关文章推荐
PHP COOKIE设置为浏览器进程
Jun 21 PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
如何让CI框架支持service层
Oct 29 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 #PHP
php弹出对话框实现重定向代码
Jan 23 #PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 #PHP
简单的php缓存类分享     php缓存机制
Jan 22 #PHP
一组PHP可逆加密解密算法实例代码
Jan 21 #PHP
discuz加密解密函数使用方法和中文注释
Jan 21 #PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 #PHP
You might like
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
基于构造函数的五种继承方法小结
2017/07/27 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
js实现前面自动补全位数的方法
2018/10/10 Javascript
iView框架问题整理小结
2018/10/16 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
python__new__内置静态方法使用解析
2020/01/07 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
公积金转移接收函
2014/01/11 职场文书
保护环境倡议书范文
2014/05/13 职场文书
教师考察材料范文
2014/06/03 职场文书
法学院毕业生求职信
2014/06/25 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python