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出错界面
Oct 09 PHP
建立动态的WML站点(三)
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php checkbox 取值详细说明
Aug 19 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
PHP获取文件行数的方法
Jun 10 PHP
php检测文本的编码
Jul 26 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
10条php编程小技巧
2015/07/07 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python 正则表达式入门(中级篇)
2016/12/07 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python——全排列数的生成方式
2020/02/26 Python
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
先进个人推荐材料
2014/12/29 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
铁人观后感
2015/06/16 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL