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 相关文章推荐
PHP4之真OO
Oct 09 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP抽象类 介绍
Jun 13 PHP
如何用php获取文件名后缀
Jun 09 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 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获取远程图片并把它保存到本地的代码
2008/04/07 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
鼠标图片振动代码
2006/07/06 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
工艺工程师工作职责
2013/11/23 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
2015最新民情日记范文
2015/06/26 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
JavaScript实现两个数组的交集
2022/03/25 Javascript