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去除数组中重复的元素并按键名排序函数
Aug 18 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
php实现分页工具类分享
Jan 09 PHP
destoon二次开发入门示例
Jun 20 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
基于php判断客户端类型
2016/10/14 PHP
php session的应用详细介绍
2017/03/22 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python 寻找局部最高点的实现
2019/12/05 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
2014年自我评价
2014/01/04 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书