我希望有一个用PHP编写的随机代码生成器,它将生成类似于http://jsfiddle.net/ UtKYn
的混合大小写代码在我开始重新发明轮子之前,也许有人可以指出我正确的方向。
感谢。
更新:
JS小提琴只是他们为每个代码项目生成的代码的一个例子。 混合的情况可以增加组合的数量,同时保持相当短。
我找到了以下功能。生成重复的概率是多少?我是否需要添加数据库查询来检查存储在db?
中的其他代码的dupesfunction rand_string($min = "8", $max = "30")
{
$code = NULL;
for($i=0;$i<$min;$i++)
{
$char = chr(rand(48,122));
while(!ereg("[a-zA-Z0-9]", $char))
{
if($char == $lchar) { continue; }
$char = chr(rand(48,90));
}
$pass .= $char;
$lchar = $char;
}
return $pass;
}
答案 0 :(得分:5)
这是一个简单的随机字符串生成器,$字符可以是您可能希望的任何字母/数字/特殊。我使用了所有可用的特殊字符和常规字符。您只需传递所需的随机生成字符串的长度,或者将生成默认的8个字符。只需删除您不想使用的任何字符。
function genRandomString($length = 8) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_+\|]}[{;:<,>.?/';
$string = '';
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters)-1)];
}
return $string;
}
答案 1 :(得分:2)
这些网站正在使用的代码基本上只是32位基础。有关详细信息,请参阅http://en.wikipedia.org/wiki/Base32。
关于对唯一键的检查,您通常希望对字段应用唯一键约束,所以是的,您需要检查现有代码是否存在,或检查插入是否失败。但是,如果您使用自动增量ID并将其转换为base 32,则不需要执行任何检查,因为MySQL正在为您生成唯一ID。
答案 2 :(得分:1)
看一下这篇文章:
http://blog.kevburnsjr.com/php-unique-hash
它提供了一种创建字母数字哈希的方法,该哈希值是唯一的并且不会重复(至少在它循环之前)。这是比生成随机数和测试唯一性更好的方法。
答案 3 :(得分:0)
我想你想要随机字符串生成:
http://www.i-fubar.com/random-string-generator.php
http://www.lost-in-code.com/programming/php-code/php-random-string-with-numbers-and-letters/
答案 4 :(得分:0)
你可以试试这个,
<?php
function rand_code($len)
{
$min_lenght= 0;
$max_lenght = 100;
$bigL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$smallL = "abcdefghijklmnopqrstuvwxyz";
$number = "0123456789";
$bigB = str_shuffle($bigL);
$smallS = str_shuffle($smallL);
$numberS = str_shuffle($number);
$subA = substr($bigB,0,5);
$subB = substr($bigB,6,5);
$subC = substr($bigB,10,5);
$subD = substr($smallS,0,5);
$subE = substr($smallS,6,5);
$subF = substr($smallS,10,5);
$subG = substr($numberS,0,5);
$subH = substr($numberS,6,5);
$subI = substr($numberS,10,5);
$RandCode1 = str_shuffle($subA.$subD.$subB.$subF.$subC.$subE);
$RandCode2 = str_shuffle($RandCode1);
$RandCode = $RandCode1.$RandCode2;
if ($len>$min_lenght && $len<$max_lenght)
{
$CodeEX = substr($RandCode,0,$len);
}
else
{
$CodeEX = $RandCode;
}
return $CodeEX;
}
echo rand_code(10);
?>
以下是详细信息,Random code generator in PHP