我有一个电子邮件地址,我想基于它创建一个唯一的ID,所以说电子邮件是me@email.com,变成66wyy7eu
我找到了一个紧密的解决方案http://www.php.net/manual/en/function.uniqid.php#96898,但它需要输入为数字
答案 0 :(得分:2)
电子邮件已经是唯一的。
您无法保证电子邮件的哈希值始终是唯一的。
如果您使用的是数据库。自动增量字段将是唯一的
答案 1 :(得分:0)
结帐hash()
。这应该允许您根据字符串输入生成足够唯一的ID。
答案 2 :(得分:0)
答案 3 :(得分:0)
请查看我对另一个性质相同的问题的答案,可以根据您的需要修改该功能:
PHP random URL names (short URL)
如上所述,电子邮件地址是唯一的,如果您将它们存储到数据库中,您将从自动增量列中获得唯一的标识号。
使用该ID,您可以使用上述函数为该ID创建唯一的哈希,并将其存储在同一行中,然后您有2个标识符用于您的电子邮件地址,内部使用的ID和加密的密钥用作短URL服务。
或者有一种更简单的方法,当你不断创建随机字符串,然后检查它是否在你的数据库中,如果密钥在你的数据库中,那么你生成另一个并再次检查,直到你有一个唯一的id。 / p>
这是一个简单的例子:
function createRandomID($length = 9)
{
$random = '';
for ($i = 0; $i < $length; $i++)
{
$random .= chr(rand(ord('a'), ord('z')));
}
return $random;
}
然后简单地做:
do
{
$id = createRandomID();
}while(!idExists($id));
//Insert $id into our DB along with the email!
注意:字符的限制会影响它可以产生的唯一字符串的数量,数据库中的字符串越多,循环速率就越高,这可能会增加数据库的负载和导致用户的页面速度变慢。
答案 4 :(得分:0)
就个人而言,我会使用类似md5()或sha1()的东西。 PHP确实有一个hash()函数,允许您指定使用的算法:http://php.net/manual/en/function.hash.php