这个字符串可能返回哪些字符范围?
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
我猜测是[a-z0-9-_]
Base64编码的字符串可能包含字符a-z A-Z 0-9 + / =
。
你需要去掉右边的填充符=
,并将+
替换为-
,将/
替换为_
。
因此,在您的情况下,可能的字符是a-z A-Z 0-9 - _
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
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, 6, 7, 8, 9
-
(减号)和_
(下划线)[a-zA-Z0-9_-]
。base64encode
会在某些字符串结尾处添加 =
作为“填充”,以使字符串长度成为4的倍数。详见回答:https://dev59.com/k2855IYBdhLWcg3wKxHc#4492448 - haxxxtonbase64url_encode
函数中,@haxxxton和那些=
被明确地进行了rtrim
操作。我会尽力保持原意并使翻译更易懂,不过不包括解释或提供额外内容。 - salathebase64encode
的默认行为,因为当我在搜索它可能的值时,这是最先出现的帖子之一 :) - haxxxton