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 相关文章推荐
Session的工作方式
Oct 09 PHP
PHP字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
php 生成WML页面方法详解
Aug 09 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
Apache中php.ini的设置方法
Feb 28 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
关于Laravel-admin的基础用法总结和自定义model详解
Oct 08 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 如何向 MySQL 发送数据
2006/10/09 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
DEDECMS首页调用图片集里的多张图片
2015/06/05 PHP
Yii2框架redis基本应用示例
2018/07/13 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
详解动画插件wow.js的使用方法
2017/09/13 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
医学院学生的自我评价分享
2013/11/19 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
房产遗嘱范本
2015/08/06 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书