2014-09-01 92 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