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 相关文章推荐
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
php生成数字字母的验证码图片
Jul 14 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP实现简易blog的制作
Oct 24 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
laravel-admin 实现给grid的列添加行数序号的方法
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
DOMXML函数笔记
2006/10/09 PHP
jquery maxlength使用说明
2011/09/09 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
Python中 Lambda表达式全面解析
2016/11/28 Python
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
理工科学生的自我评价
2013/12/15 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
学生评语大全
2014/04/18 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
七一活动主持词
2015/06/29 职场文书
高中体育课教学反思
2016/02/16 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
python flappy bird小游戏分步实现流程
2022/02/15 Python
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android