2014-09-01 91 views
-2

好了,所以我试图做一个系统,我可以打电话:生成基于以前的字符串一个随机字符串

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"); 


?> 
+0

一个新的“随机”字符串将如何“相同”?这是相反的随机... – 2014-09-01 03:00:28

+0

刷新ID = 817289387198389,如果我再次呼叫ID回声817289387198389但是,如果我刷新ID = 7826867382,如果我再次呼叫ID echo 7826867382 – user3902523 2014-09-01 03:01:02

回答

1

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

<?php 

$num = rand(0, 100000); 

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

?> 

这将提供一个随机数用于你的功能,但如果你刷新页面,数字将会改变。但是,如果在同一页上调用两次,它将具有相同的输出值....对吗?

你甚至可以使用随机生成的字符串,而不是一些...

0

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

+0

但刷新散列是一样的,它需要更新刷新。 – user3902523 2014-09-01 03:07:25

+0

将它与时间连接在一起,例如,或另一个自动更改的值 – wbars 2014-09-01 03:08:17

0

只是凑当前时间。

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

如果你不想串是可预测的(例如,知道什么时候该脚本运行可以让别人预测字符串),然后使用一个随机数发生器...

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

只要作为变量在某处功能外声明...

$RandomString = md5(time()); 

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

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

+1

$ randomstring是否超出范围?由于它没有解析到函数,它也不是全局的? – 2014-09-01 03:21:29