【发布时间】:2013-10-01 19:10:47
【问题描述】:
我正在寻找生成随机/唯一字符串的最短方法,为此我使用了以下两个:
$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())),"=");
【问题讨论】:
-
为什么需要在一行代码中实现?
-
与此相关的问题不输出字母表中的第一个字符...为什么要关闭我的?
-
如果你们想知道为什么是第一个字母,那么我正在用 div 元素做一些测试......类或 ids 不接受第一个字符上的数字,它们不接受任何地方的特殊字符跨度>
-
加下划线
_0000的前缀有效。 -
前缀什么?可以举个例子吗