PHP 短连接生成算法
短连接生成类:
 <?php
 #短连接生成算法
 class Short_Url {
     #字符表
     public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
     public static function short($url)
     {
         $key = "alexis";
         $short_url_list = array();
         $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位以后的加密串都归零
             $hex = hexdec($urlhash_piece) & 0x3fffffff; #此处需要用到hexdec()将16进制字符串转为10进制数值型,否则运算会不正常
             $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.cnblogs.com/zemliu/";
 $short = Short_Url::short($url);
 print_r($short);
输出结果:
Array ( [0] => http://t.cn/KyfLyH [1] => http://t.cn/bPafHS [2] => http://t.cn/H880aD [3] => http://t.cn/TmvDK0 )
生成的短url存到服务器里,做一个映射,short_url => original_url,输入短url的时候按照映射转回长url,然后访问原始url即可
PS:另外有一种想法,就是把url按照顺序存贮,第一条为aaaaaa,第二条为aaaaab..以此类推,不需要hash,这样不就不会重复了吗。。 - -
PHP 短连接生成算法的更多相关文章
- PHP 短连接生成
		<?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQR ... 
- php短网址生成算法
		<?php //短网址生成算法 class ShortUrl { //字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQ ... 
- 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)
		短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ... 
- URL短网址生成算法原理和php实现案例
		短网址(Short URL),顾名思义就是在形式上比较短的网址. 短链接的好处:1.内容需要:2.用户友好:3.便于管理为什么要这样做的,原因我想有这样几点:微博限制字数为140字一条,那么如果我们需 ... 
- 稳定好用的短连接生成平台,支持API批量生成
		 https://www.5w.fit/ 01 安全:快码拥有两种模式:防封模式和极速模式,防封模式使短链更加安全! 02 无流量劫持:快码短链绝不劫持流量! 03 极速:专属大量服务器,支持高并发 ... 
- 用PHP实现URL转换短网址的算法示例
		短网址就是把一个长的地址转换在超级短的网址,然后访问短网址即可跳转到长网址了,下面来看用PHP实现URL转换短网址的算法与例子. 短网址(Short URL) ,顾名思义就是在形式上比较短的网址.在W ... 
- PHP实现URL长连接转短连接方法总结
		短链接,通俗来说,就是将长的URL 网址,通过程序计算等方式,转换为简短的网址字符串. 这样的话其好处为:1.内容需要:2.用户友好:3.便于管理. 实现短网址(short URL)系统比较流行的算法 ... 
- 微博短链接的生成算法(Java版本)
		最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ... 
- 使用新浪API生成短连接
		公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三 ... 
随机推荐
- C#窗体控件简介ListBox
			ListBox 控件 ListBox 控件又称列表框,它显示一个项目列表供用户选择.在列表框中,用户 一次可以选择一项,也可以选择多项. 1.常用属性: (1) Items属性: 用于存放列表框中的列 ... 
- golang channel本质——共享内存
			channel是golang中很重要的概念,配合goroutine是golang能够方便实现并发编程的关键.channel其实就是传统语言的阻塞消息队列,可以用来做不同goroutine之间的消息传递 ... 
- Python_Cxfreeze打包exe
			Cxfreeze打包exe 1● 下载cxfreeze 1◆ python -m pip install cx_Freeze --upgrade https://sourceforge ... 
- 快速切题 sgu 111.Very simple problem 大数 开平方 难度:0 非java:1
			111.Very simple problem time limit per test: 0.5 sec. memory limit per test: 4096 KB You are given n ... 
- TEdit的 Clear 和 赋值 ''
			function TControl.GetText: TCaption; var Len: Integer; begin Len := GetTextLen; SetString(Result, PC ... 
- RM报表 实际打印的判断
			procedure TFormDZMD.RMReport1PrintReportEvent(Sender: TObject); begin // Log('RMReport1PrintReportEv ... 
- 【数据库】MFC ODBC(二)
			三.CRecordset类 1.IsBOF与IsEOF (1)IsBOF 如果记录集没有记录,或已经向前游动到第一个记录之前,则返回非零:否则返回0.详细说明如下: 1)访问Open函数之后,如果记录 ... 
- php 递归调用又一种方法
			public static function encodeXml($data){ $attr = $xml = ""; foreach($data a ... 
- kbmMW 5.06.20试用笔记
			1.kbmMWConfiguration自动备份配置文件的问题还没有修正. 下面是以前写过的内容,再一次在新闻组中提出这个问题: kbmMW提供一个强大的配置信息管理对象,前期译过这个对象的介绍,在使 ... 
- Nexus设备渗透测试平台 – Kali Linux NetHunter
			NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括一些特殊和独特的功能.NetHunter支持无线802.11注入,一键MANA AP搭建,HI ... 
