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程序员的13个好习惯小结
Feb 20 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 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网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
python 字符串split的用法分享
2013/03/23 Python
python实现电子词典
2020/04/23 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
高中生第一学年自我鉴定
2014/09/12 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
2015年度企业工作总结
2015/05/21 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android