基于先前的字符串生成随机字符串

时间:2014-09-01 02:58:08

标签: php

好的,所以我试图建立一个我可以打电话的系统:

echo _stringClamp("string");

它推动"字符串" &安培;随机字符串(需要每次刷新一个新的随机字符串)到一个数组,如果我调用它两次

echo _stringClamp("string");
echo _stringClamp("string");

它将回显相同的值。 这是我到目前为止所做的。

<?php
function _stringClamp ($string){

$stringSave = $string;

$stringChars = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890";

$strings = array();

$string = str_shuffle($string);

$string = "__" . $string;

$id = end($strings);

    for ($i = 0; $i < 15; $i++) {

        $string.= $stringChars[rand(0, strlen($stringChars) - 1)];

    }

$strings[$stringSave] = $stringSave;

if (in_array($stringSave, $strings)) {

    return $strings[$string];

}else{

    $strings[$stringSave] = $string;
    print_r($strings);

}

}

echo _stringClamp("IDs");
echo "<br>";
echo _stringClamp("IDs");


?>

3 个答案:

答案 0 :(得分:1)

为了得到你所要求的东西你可能需要在调用函数之前生成随机值,然后使用该随机值作为第二个参数,例如:

<?php

$num = rand(0, 100000);

echo _stringClamp("string", $num);
echo _stringClamp("string", $num);

?>

这将提供在您的函数中使用的随机数,但如果您刷新页面,则数字将会更改。但是,如果在同一页面上调用两次,它将具有相同的输出值....对吗?

您甚至可以使用随机生成的字符串而不是数字...

答案 1 :(得分:0)

如果我理解正确,您需要使用hash-functions(保证相同输出的输出相同)。

答案 2 :(得分:0)

只是哈希当前时间。

$Seed = time();
$RandomString = md5($Seed);

如果您不希望字符串可预测(例如,知道脚本何时运行可以让某人预测字符串),那么使用随机数生成器......

$Seed = rand();
$RandomString = md5($Seed);

只要变量在函数外部声明...

$RandomString = md5(time());

function _stringClamp($String) {
    global $RandomString;
    return $String . $RandomString;    
}

每次都应该获得相同的字符串