`

PHP 短连接生成

php 
阅读更多
PHP 短连接生成
http://www.addictivetips.com/microsoft-office/excel-2010-insert-slicer-in-pivot-tables-charts/
<?php 
    #短连接生成算法
    
    class Short_Url {
        #字符表
        public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

        public static function short($url) {
            $key = "alexis";
            $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即可

<?php
/**
 * PHP N???????? 
 * @author QPWOEIRU96
 * @date 2012-03-27
 * @site: http://sou.la/blog
 */
Class TinyURL {
	static private $key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; //可以多位 保证每位的字符在URL里面正常显示即可
	private function  __construct() {}
	private function  __clone(){}
	
	static public function encode($value) {
		$base = strlen( self::$key );
		$arr = array();
		while( $value != 0 ) {
			$arr[] = $value % $base;
			$value = floor( $value / $base );
		}
		$result = "";
		while( isset($arr[0]) ) $result .= substr(self::$key, array_pop($arr), 1 );
		return $result;
	}
	
	static public function decode($value) {
		$base = strlen( self::$key );
		$num = 0;
		$key = array_flip( str_split(self::$key) );
		$arr = str_split($value);
		for($len = count($arr) - 1, $i = 0; $i &lt;= $len; $i++) {
			$num += pow($base, $i) * $key[$arr[$len-$i]];
		}
		return $num;
	}
}

使用范例:
$t = 100;
$time_start =  microtime(true);
while($t--){
	var_dump( TinyURL::encode(1000000) );
	var_dump( TinyURL::decode("4C92") );
}
$time_end = microtime(true);
printf("[内存使用: %.2fMB]\r\n", memory_get_usage() /1024 /1024 ); 
printf("[内存最高使用: %.2fMB]\r\n", memory_get_peak_usage()  /1024 /1024) ; 
printf("[执行时间: %.2f毫秒]\r\n", ($time_end - $time_start) * 1000 );

以上的代码适合使用在:自增ID的传统关系型数据库里面。需要执行二次SQL,第一次获取自增ID,第二次根据ID生成短链接。[或者3次,额外一次用于判断是否存在此短链接。]

当然还有一种是根据URL进行Hash运算的算法,这种算法有以下的优点:

1.无需id,用Key/Value这样的格式即可满足存储。
2.SQL插入只需一条语句。
3.生成的数据具有离散性,无法观察生成规律。
当然缺点也是有的:

1.所以的Hash算法都存在冲突的可能,一旦冲突原始的就会被覆盖。[当然你可以增加额外的逻辑去判断。]
2.数据规模不好控制,你不知道什么时候才能开始使用新的Hash数据位,但随着数据量的增加,冲突的概率会越来越高。
此种的代码适用于NoSQL等非关系型数据库,查找快更新快。


分享到:
评论

相关推荐

    2021最新PHP短网址生成系统短链接生成系统URL缩短器系统源码.zip

    1. **哈希算法**:短链接通常由哈希函数生成,如MD5或SHA-1。这些算法将长URL转化为固定长度的唯一哈希值,然后对哈希值进行截取或编码,生成较短的字符串。 2. **数据库存储**:哈希值不能直接作为短链接,因为...

    全新PHP短网址生成系统 短链接生成系统

    全新 PHP短网址系统URL 缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。 系统使用了 Laravel 框架编写,前后台双语言使用,可以设置多域名,还可以开设...

    PHP短网址短链接生成源码_黑色简洁

    【PHP短网址短链接生成源码】是一种用于创建简短、易于分享的网址的技术实现,主要应用于社交媒体、营销推广等领域。这种技术的核心是通过特定算法将长网址转换为短链接,便于用户记忆和传播。本源码以黑色简洁的...

    最新抖音快手防红短链接生成系统网站源码

    抖音快手防红短链接生成系统网站源码,现在不管是做短视频,还是网站,防红都是至关重要的一步,源码已经修复完毕,自带八条接口,可任意使用。源码搭建简单,支付对接了第三方个人签,对接自带API文档提供下载,非常好用的...

    2022全新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码/站长亲测

    全新PHP短网址系统URL缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。 系统使用了Laravel框架编写,前后台双语言使用,可以设置多域名,还可以开设套餐...

    黑色简洁的PHP短网址短链接生成源码.zip

    黑色简洁的PHP短网址短链接生成源码.zip

    搏天短网址管理系统开源 PHP源码 短网址生成程序

    生成的短网址可以在后台修改跳转的链接 可以用来引流什么的,自带访问统计! 安装说明: 1、直接上传空间,导入install.sql文件到数据库 2、修改config.php文件,改成你自己数据库的 3、因为新浪短网址已经挂了,...

    PHP短网址短链接生成源码

    支持黑夜模式简洁PHP短网址短链接生成源码 简洁、优雅、反应灵敏的设计 创建URL、创建自定义URL、密码保护的链接、链接统计、暗色主题、小书签、复制和共享链接 后端: 删除网址、编辑网站设置、添加或编辑广告、...

    黑色简洁的PHP短网址短链接生成源码.rar

    黑色简洁的PHP短网址短链接生成源码 可在后台添加广告 前端: 简洁、优雅、反应灵敏的设计 创建URL、创建自定义URL、密码保护的链接、链接统计、暗色主题、小书签、复制和共享链接 后端: 删除网址、编辑网站设置...

    基于OreoFrame(PHP)框架的免费开源防洪短链接生成系统.zip

    【标题】"基于OreoFrame(PHP)框架的免费开源防洪短链接生成系统"是一个专为PHP开发者设计的开源项目,旨在实现一个高效的短链接生成服务,具有防止洪水攻击的功能。这个系统采用OreoFrame作为开发框架,该框架可能...

    PHP短链接短网址生成源码V3.0.zip

    PHP短链接短网址生成源码V3.0,PHP最低版本要求:5.4(为了更好的性能建议使用PHP7.x) V3.0(11月14日更新) 1.更换用户中心模板 2.首页可以更换模板(暂时只有俩套) 3.增加首页背景更换 4.logo可以在后台设置 5....

    php多条网址生成短链接php多条网址生成短链接

    多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多条网址生成短链接多...

    PHP短链接短网址生成源码.zip

    PHP短链接短网址生成源码.zip

    生成短网址并将短网址生成二维码的php源码

    整合短网址源码+二维码生成工具源码,都可以单独使用。PHP+MYSQL源码,内含MYSQL数据库脚本。自定义的短网址生成工具,并且可以将生成的短网址再生成二维码供下载。建议先配置二级域名(.htaccess)再使用,顶级域名...

    短链接生成带教程源码.

    2. **后端处理**:通常用Node.js、Python、PHP等服务器端语言实现,负责接收前端提交的长URL,生成唯一短ID,存储长URL与短ID的对应关系,以及处理短链接的解析和重定向。 3. **数据库设计**:存储长URL和短ID的...

    优雅简洁PHP短网址短链接生成源码支持黑夜模式反应灵敏的设计.zip

    支持黑夜模式简洁PHP短网址短链接生成源码 简洁、优雅、反应灵敏的设计 创建URL、创建自定义URL、密码保护的链接、链接统计、暗色主题、小书签、复制和共享链接 后端: 删除网址、编辑网站设置、添加或编辑广告、...

    全新PHP短网址生成系统,短链接生成系统,URL缩短器系统源码

    本文将深入探讨“全新PHP短网址生成系统”这个话题,包括其工作原理、实现方法以及源码分析。 短网址生成系统,顾名思义,是一种能够将长URL转化为短链接的服务。它主要通过哈希算法或自增ID结合编码方式来实现。在...

    2023最新防红短链接在线生成源码内置接口无广告.zip

    `index.php`是PHP脚本文件,它承载了主要的业务逻辑,包括短链接的生成、解析以及与数据库的交互。PHP是一种广泛应用的服务器端脚本语言,特别适合处理Web应用中的动态内容。 `dwz`通常指的是DWZ(Dynamic Web Zone...

    【短网址源码】在线生成短网址链接生成系统

    客户系统软件、社交媒体共享、短链接统计分析、短链接自定、多个国家語言适用、社交媒体共享及其API系统软件等。 这个是我们见的目前此类功能最强大的短网址源码,支付方式只有paypal,要运营的话找人对接一下国内支付...

    新版黑色简洁的PHP短网址短链接生成源码

    前端: 简洁、优雅、反应灵敏的设计 创建URL、创建自定义URL、密码保护的链接、链接统计、暗色主题、小书签、复制和共享链接 后端: 删除网址、编辑网站设置、添加或编辑广告、分析、使用自定义CSS

Global site tag (gtag.js) - Google Analytics