生成短链接

<?php
/**
 * 生成短链接
 * @param string $url 长链接
 * @return string 短链接
 */
function short_url($url)
{
    $host = 'http://mn.co'; // 短链接主机地址

    $char = array
    (
        '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'
    );

    $md5 = md5($url); // 将长链接进行MD5处理
    $md5sub = substr($md5, 0, 8); // 取出前面8个字符
    $int = 0x3FFFFFFF & (1 * ("0x{$md5sub}")); // 与运算,0x3FFFFFFF(十六进制)=1073741823(十进制)=2^30-1
    $key = '';

    for ($i = 0; $i < 6; $i++) {
        $key .= $char[0x0000001F & $int]; // 0x0000001F(十六进制)=31(十进制)
        $int >>= 5; // 右移运算
    }

    return "{$host}/{$key}";
}

$url = short_url('http://www.manong.life/index.html?name=张三&age=18');
echo $url; // http://mn.co/5norw2

Copyright © 2023 码农人生. All Rights Reserved