【发布时间】:2011-05-23 19:39:37
【问题描述】:
从这个字符串返回的可能字符范围是多少?
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
我的猜测是[a-z0-9-_]
【问题讨论】:
-
base64 区分大小写。所以应该是 a-zA-Z0-9-_
从这个字符串返回的可能字符范围是多少?
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, Za, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z0, 1, 2, 3, 4, 5, 6, 7, 8, 9-(减号)和_(下划线)在您的正则表达式样式中,应该是 [a-zA-Z0-9_-]。
【讨论】:
base64encode 喜欢将= 添加到某个字符串的末尾作为“填充”,以保持字符串长度为模 4 数。查看答案:stackoverflow.com/a/4492448/648350
= 在问题的base64url_encode 函数中被明确地rtrim-ed。
base64encode 的默认行为是什么,因为当我搜索它的可能值时,这是第一批发布的帖子之一向上:)