随机字符串生成器生成长度错误的字符串(PHP)
我试图创建一个生成随机字符串的函数,但是字符串的长度有时是错误的。随机字符串生成器生成长度错误的字符串(PHP),php,Php,我试图创建一个生成随机字符串的函数,但是字符串的长度有时是错误的。 function getRandomName($maxChars) { $nameChars = str_split("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"); $numOfChars = count($nameChars); // amount of characters in $nameChars $random
function getRandomName($maxChars)
{
$nameChars = str_split("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
$numOfChars = count($nameChars); // amount of characters in $nameChars
$randomString = "";
for($count=0;$count<$maxChars;$count++)
{
$randomInt = round(rand(0,$numOfChars));
$selectedChar = $nameChars[$randomInt]; // random character in $nameChars
$randomString .= $selectedChar; // adds to string
}
echo " ".strlen($randomString).", "; // length, string is echoed later
return $randomString;
}
exit(getRandomName(6)); // 6 characters long
?>
函数getRandomName($maxChars)
{
$nameChars=str_split(“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890”);
$numochars=count($nameChars);//$nameChars中的字符数
$string=“”;
对于($count=0;$count)
大多数情况下,结果类似于6,s2jd8q
。但有时,结果类似于5,d82kw
。我只希望字符串长度为6个字符,而不是5个字符。
有人知道如何解决这个问题吗?编辑
$randomInt=round(rand(0,$numochars));
到$randomInt=round(rand(0,$numochars-1));
如果你运行这个
$nameChars = str_split("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
$numOfChars = count($nameChars); // amount of characters in $nameChars
//$numOfChars = 62
echo($nameChars[61]); //Output: 0 (Last character)
编辑
$randomInt=round(rand(0,$numochars));
到$randomInt=round(rand(0,$numochars-1));
如果你运行这个
$nameChars = str_split("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");
$numOfChars = count($nameChars); // amount of characters in $nameChars
//$numOfChars = 62
echo($nameChars[61]); //Output: 0 (Last character)
我也遇到了同样的问题!我设法解决了这个问题!这是我生成随机字符串的无错误函数
public static function generateKey($length)
{
$str = "";
$chars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ^*(_=?+|%-";
$charlen = strlen($chars);
for($i=0;$i<$length;$i++)
{
$str .= $chars[rand(0,$charlen-1)];
}
return $str;
}
公共静态函数generateKey($length)
{
$str=”“;
$chars=“1234567890abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvwxyz^*(=?+|%-”;
$charlen=strlen($chars);
对于($i=0;$i我也遇到了同样的问题!我设法解决了这个问题!下面是生成随机字符串的无错误函数
public static function generateKey($length)
{
$str = "";
$chars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ^*(_=?+|%-";
$charlen = strlen($chars);
for($i=0;$i<$length;$i++)
{
$str .= $chars[rand(0,$charlen-1)];
}
return $str;
}
公共静态函数generateKey($length)
{
$str=”“;
$chars=“1234567890abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvwxyz^*(=?+|%-”;
$charlen=strlen($chars);
对于($i=0;$i我刚才做过这个,它与其他类似,只是使用了substr()函数。下面是:
function randomKey($length = 32) {
$key = '';
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for ($i = 0; $i < $length; $i++) {
// Get 1 random char from 0 to characters length
$key .= substr($characters, rand(0, strlen($characters) - 1), 1);
}
return $key;
}
echo randomKey();
函数随机键($length=32){
$key='';
$characters='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789';
对于($i=0;$i<$length;$i++){
//从0到个字符长度获取1个随机字符
$key.=substr($characters,rand(0,strlen($characters)-1),1);
}
返回$key;
}
回声随机键();
希望您也能发现此功能很有用。您好。我不久前做过此功能,它与其他功能类似,但使用了substr()函数。下面是:
function randomKey($length = 32) {
$key = '';
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for ($i = 0; $i < $length; $i++) {
// Get 1 random char from 0 to characters length
$key .= substr($characters, rand(0, strlen($characters) - 1), 1);
}
return $key;
}
echo randomKey();
函数随机键($length=32){
$key='';
$characters='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789';
对于($i=0;$i<$length;$i++){
//从0到个字符长度获取1个随机字符
$key.=substr($characters,rand(0,strlen($characters)-1),1);
}
返回$key;
}
回声随机键();
希望您也能发现这一点。祝您好运。我总是使用此my函数生成自定义随机字符串
<?php
function random_alphanumeric($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345689';
$my_string = '';
for ($i = 0; $i < $length; $i++) {
$pos = mt_rand(0, strlen($chars) -1);
$my_string .= substr($chars, $pos, 1);
}
return $my_string;
}
$test = random_alphanumeric(50); // 50 characters
echo $test;
?>
打印输出:rqY4ePLhQYvu5d5m8Mfvcj8ZiYQbPu5tOzuIcMeWR5thmrlYpt
如果您需要两个唯一的字符串,我建议您使用此方法
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
while ($string_1 == $string_2) {
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
if ($string_1 != $string_2) {
break;
}
}
echo $string_1;
echo "<br>\n";
echo $string_2;
$string\u 1=随机字母数字(50);
$string_2=随机字母数字(50);
而($string_1==$string_2){
$string_1=随机字母数字(50);
$string_2=随机字母数字(50);
如果($string_1!=$string_2){
打破
}
}
echo$string_1;
回声“
\n”;
echo$string_2;
$string_1:fx9kdyyfef5ja5cejphtky2uxaijwvvksjlt28xxg2q89brnf
$string_2:g9RG4kdLgxxhu8QzmkWHH4eyH1WCaUjYaALejR26Nnzjvqmjw1
我总是使用此my函数生成自定义随机字符串
<?php
function random_alphanumeric($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345689';
$my_string = '';
for ($i = 0; $i < $length; $i++) {
$pos = mt_rand(0, strlen($chars) -1);
$my_string .= substr($chars, $pos, 1);
}
return $my_string;
}
$test = random_alphanumeric(50); // 50 characters
echo $test;
?>
打印输出:rqY4ePLhQYvu5d5m8Mfvcj8ZiYQbPu5tOzuIcMeWR5thmrlYpt
如果您需要两个唯一的字符串,我建议您使用此方法
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
while ($string_1 == $string_2) {
$string_1 = random_alphanumeric(50);
$string_2 = random_alphanumeric(50);
if ($string_1 != $string_2) {
break;
}
}
echo $string_1;
echo "<br>\n";
echo $string_2;
$string\u 1=随机字母数字(50);
$string_2=随机字母数字(50);
而($string_1==$string_2){
$string_1=随机字母数字(50);
$string_2=随机字母数字(50);
如果($string_1!=$string_2){
打破
}
}
echo$string_1;
回声“
\n”;
echo$string_2;
$string_1:fx9kdyyfef5ja5cejphtky2uxaijwvvksjlt28xxg2q89brnf
$string_2:g9RG4kdLgxxhu8QzmkWHH4eyH1WCaUjYaALejR26Nnzjvqmjw1
这是一个解决方案,它处理字符数组,避免substr
和转换为数组。它比这里发布的所有其他解决方案都快得多
function randomString($length)
{
$out = '';
for($i = 0; $i < $length; ++$i)
switch(mt_rand(0, 2))
{
case 0: $out .= char(mt_rand(48, 57)); break;
case 1: $out .= char(mt_rand(65, 90)); break;
case 2: $out .= char(mt_rand(97, 122)); break;
}
return $out;
}
函数随机字符串($length)
{
$out='';
对于($i=0;$i<$length;++$i)
开关(mt_rand(0,2))
{
案例0:$out.=char(mt_rand(48,57));break;
案例1:$out.=char(mt_rand(65,90));break;
案例2:$out.=char(mt_rand(97122));break;
}
退回$out;
}
这里有一个解决方案,它处理字符数组,避免substr
和转换为数组。它比这里发布的所有其他解决方案快得多
function randomString($length)
{
$out = '';
for($i = 0; $i < $length; ++$i)
switch(mt_rand(0, 2))
{
case 0: $out .= char(mt_rand(48, 57)); break;
case 1: $out .= char(mt_rand(65, 90)); break;
case 2: $out .= char(mt_rand(97, 122)); break;
}
return $out;
}
函数随机字符串($length)
{
$out='';
对于($i=0;$i<$length;++$i)
开关(mt_rand(0,2))
{
案例0:$out.=char(mt_rand(48,57));break;
案例1:$out.=char(mt_rand(65,90));break;
案例2:$out.=char(mt_rand(97122));break;
}
退回$out;
}
如果要这样做,为什么不直接访问字符索引?$my_string.=$chars[mt_rand(0,strlen($chars)-1)];
如果要这样做,为什么不直接访问字符索引?$my_string.=$chars[mt rand(0,strlen($chars)-1)];
为什么使用substr
,只需访问字符串索引。即:$key.=$characters[rand(0,strlen($characters)-1)];
为什么使用substr
,只需访问字符串索引。即:$key.=$characters[rand(0,strlen($characters)-1)];
与这里的大多数解决方案相比,这种方法非常好,原因有两个。1)它预先计算$chars
的长度;2)您可以通过它的索引而不是使用substr
来访问char。与这里的大多数解决方案相比,这种方法非常好,原因有两个。1)它预先计算$chars
的长度;2)您可以通过它的索引来访问char