雨的味道

【php】phper,如果要在url上带base64数据,请务必符合规范!


代码都给你们准备好了,泪目

<?php

/*
    在url中带base64数据的处理
*/


/**
 * 输出到url的base64编码
 * 
 * @param string $input 需要编码的字符串
 * 
 * @return string
 */
function url_base64_encode($input)
{
    return urlsafe_base64(base64_encode($input));
}

/**
 * 解析url中的base64
 * 
 * @param string $input 需要解码的字符串
 * 
 * @return bool|string
 */
function url_base64_decode($input)
{
    $remainder = strlen($input) % 4;
    
    if ($remainder) {
        $addlen = 4 - $remainder;
        $input .= str_repeat('=', $addlen);
    }
    
    return base64_decode(strtr($input, '-_', '+/'));
}

/**
 * 将标准base64转换为url安全的base64
 * 
 * @param $base64_str base64编码的字符串
 * 
 * @return string url安全的base64 
 */
function urlsafe_base64($base64_str)
{
    return rtrim(strtr($base64_str, '+/', '-_'), '=');
}


测试代码:

$data = random_bytes(rand(10, 23));

$base64_data = base64_encode($data);
echo "标准编码:\t" . base64_encode($data) . PHP_EOL;
echo "标准解码:\t" . base64_decode($base64_data) . PHP_EOL;

echo '----' . PHP_EOL;

$base64_data = url_base64_encode($data);
echo "url编码:\t" . $base64_data . PHP_EOL;

$data2 = url_base64_decode($base64_data);
echo "url解码:\t" . $data2 . PHP_EOL;

echo '----' . PHP_EOL;

echo "是否相等:\t" . ($data == $data2 ? '是' : '否') . PHP_EOL;


«   2023年1月   »
1
2345678
9101112131415
16171819202122
23242526272829
3031
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.1 Zero Theme By 爱墙纸

百度资讯综合思念体对有机生命接触用人形终端界面 那就是
晋ICP备15000230号-1