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 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
Aug 31 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
php 使用array函数实现分页
Feb 13 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
php封装json通信接口详解及实例
Mar 07 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 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 Class 文章
2007/04/04 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
javascript 闭包详解
2015/07/02 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python实现邮件循环自动发件功能
2020/09/11 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
大学专科自荐信
2014/06/17 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
研讨会致辞
2015/07/31 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
python数字转对应中文的方法总结
2021/08/02 Python
php修改word的实例方法
2021/11/17 PHP
Mysql数据库group by原理详解
2022/07/07 MySQL