PHP 如何实现 URL 安全的 Base64 编码
URL 安全的 Base64
由于标准的 Base64 编码后可能出现字符 + 和 / ,在 URL 中就不能直接作为参数,所以 URL 安全的 Base64 编码,需要把字符 + 和 / 分别变成 - 和 _,另外 = 字符也可能出现在 Base64 编码中,但 = 用在URL、Cookie 里面会造成歧义,所以,很多 URL 安全的 Base64 编码也会把 = 去掉:
function base64_urlencode($str){ return rtrim(strtr(base64_encode($str), '+/', '-_'), '='); }
去掉 = 后怎么解码呢?因为 Base64 是把 3 个字节变为 4 个字节,所以 Base64 编码的长度永远是 4 的倍数,因此,需要加上 = 把 Base64 字符串的长度变为 4 的倍数,就可以正常解码了,然后再把 - 和 _ 替换换回+ 和 /:
function base64_urldecode($str){ return base64_decode(str_pad(strtr($str, '-_', '+/'), strlen($str) % 4, '=')); }
参考文章:https://www.cainiaoxueyuan.com/ymba/46667.html