<?php /** * 根据原始URL生成短链接KEY值 * * @param string $url 原始URL * @return string 短链接KEY值 */ function short_url(string $url): string { $length = 6; // 短链接KEY值长度 $key = ''; // 短链接KEY值 // 短链接KEY值组成字符 $char = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5' ]; $sub = substr(md5($url), 0, 8); // 将原始URL进行MD5运算,然后取出哈希字符串前8个字符 $dec = hexdec("0x$sub"); // 十六进制string转十进制int $int = 0x3FFFFFFF & $dec; // 与运算,0x3FFFFFFF(十六进制)=1073741823(十进制)=2^30-1 for ($i = 0; $i < $length; $i++) { $key .= $char[0x0000001F & $int]; // 0x0000001F(十六进制)=31(十进制) $int >>= 5; // 右移运算 } unset($int); return $key; } $host = 'http://mn.co'; // 负责短链接跳转的主机地址 $url = 'http://www.manong.life/index.html?name=张三&age=18'; // 原始URL $key = short_url($url); // 短链接KEY值 echo "短链接地址:$host/$key"; // 短链接地址:http://mn.co/5norw2 //========== 总结 ==========// // 1、短链接KEY值和原始URL是一对一的关系,需要将它们保存到数据库中。
Copyright © 2024 码农人生. All Rights Reserved