我正在寻找生成随机/唯一字符串的最短路径,为此我使用了以下两种方法:
$cClass = sha1(time());
或者$cClass = md5(time());
然而,我需要字符串以字母开头,我看了一下base64编码,但是它在末尾添加了==
,然后我需要摆脱它。
有什么一行代码的最佳方法来实现这一点?
更新:
PRNDL提出了一个很好的建议,我最终使用了它,但稍作修改。
echo substr(str_shuffle(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ),0, 1) . substr(str_shuffle(aBcEeFgHiJkLmNoPqRstUvWxYz0123456789),0, 31)
会生成32个字符,模拟 MD5 哈希值,但它总是会让第一个字符成为英文字母,如下所示:
然而,Uours 进一步改进了他的答案;
substr(str_shuffle("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 1).substr(md5(time()),1);
更简短更甜美
另一个由Anonymous2011提出的建议非常棒,但是由于某些原因,第一个字符总是 M、N、Y、Z,所以不符合我的要求,否则这会是最佳答案。顺便问一下,有人知道为什么它总是产生这些特定的字母吗?
以下是我修改后的预览
echo rtrim(base64_encode(md5(microtime())),"=");
_0000
是有效的。 - Alix Axel