PHP将URL转换成短网址的算法分享


Posted in PHP onSeptember 13, 2016

前言

短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。

短链接的好处:

1、内容需要;
2、用户友好;
3、便于管理。

下面是用PHP实现短网址转换的算法,代码如下:

PHP

<?php
//短网址生成算法
class ShortUrl {
  
  //字符表
  public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
  public static function encode($url)
  {
    $key = 'abc'; //加盐
    $urlhash = md5($key . $url);
    $len = strlen($urlhash);
 
    //将加密后的串分成4段,每段4字节,对每段进行计算,一共可以生成四组短连接
    for ($i = 0; $i < 4; $i++) {
      $urlhash_piece = substr($urlhash, $i * $len / 4, $len / 4);
      
      //将分段的位与0x3fffffff做位与,0x3fffffff表示二进制数的30个1,即30位以后的加密串都归零
      //此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常
      $hex = hexdec($urlhash_piece) & 0x3fffffff;
 
      //域名根据需求填写
      $short_url = "http://t.cn/";
      
      //生成6位短网址
      for ($j = 0; $j < 6; $j++) {
        
        //将得到的值与0x0000003d,3d为61,即charset的坐标最大值
        $short_url .= self::$charset[$hex & 0x0000003d];
        
        //循环完以后将hex右移5位
        $hex = $hex >> 5;
      }
 
      $short_url_list[] = $short_url;
    }
 
    return $short_url_list;
  }
}
 
$url = "http://www.sunbloger.com/";
$short = ShortUrl::encode($url);
print_r($short);
?>

通常我们用四组网址中的第一组即可。

这里需要注意的是,这个算法是不可逆的,因此,通常的做法是将短网址和对应的原网址存入数据库,当访问时,从数据库中取出匹配的原网址,通过301或header进行跳转。

总结

以上就是这篇文章的全部内容,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
用PHP连mysql和oracle数据库性能比较
Oct 09 PHP
ajax缓存问题解决途径
Dec 06 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 PHP
php常见的魔术方法详解
Dec 25 PHP
Laravel实现构造函数自动依赖注入的方法
Mar 16 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 #PHP
php微信公众平台开发之微信群发信息
Sep 13 #PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 #PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 #PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 #PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 #PHP
PHP入门教程之图像处理技巧分析
Sep 11 #PHP
You might like
mysql总结之explain
2012/02/27 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
php四种定界符详解
2017/02/16 PHP
清空上传控件input file的值
2010/07/03 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python中http请求方法库汇总
2016/01/06 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
教你学会使用Python正则表达式
2017/09/07 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
python对一个数向上取整的实例方法
2020/06/18 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
思想专业自荐信范文
2013/12/25 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
中华魂演讲稿
2014/05/13 职场文书
长城导游词300字
2015/01/30 职场文书
学校工会工作总结2015
2015/05/19 职场文书
百年孤独读书笔记
2015/06/29 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android