使用php生成有意义的随机字符串

时间:2013-09-30 10:06:08

标签: php random

我想生成一个带有意义的单词

的随机字符串
function randString($length, $charset='abcdefghijklmnopqrstuvwxyz'){
    $str = '';
    $count = strlen($charset);
    while ($length--) {
        $str .= $charset[mt_rand(0, $count-1)];
    }
    return $str;
}

我已经使用过这个函数,但是它生成了random,这在字典中没有任何意义。 你有什么想法或不可能。 如果您有任何想法或有更好的解决方案,请告诉我。

提前致谢。

3 个答案:

答案 0 :(得分:1)

尝试使用随机字母数字字符串

function get_random_string($valid_chars, $length) {
    $random_string = '';

    //Count the number of chars in the valid chars string so we know how many choices we have
    $num_valid_chars = strlen($valid_chars);

    //Repeat the steps until we've created a string of the right length
    for($i=0;$i<$length;$i++) {
        //Pick a random number from 1 up to the number of valid chars
        $random_pick = mt_rand(1, $num_valid_chars);

        //Take the random character out of the string of valid chars
        //Subtract 1 from $random_pick because strings are indexed starting at 0, and we started picking at 1
        $random_char = $valid_chars[$random_pick-1];
        $random_string .= $random_char;
    }

    return $random_string;
}  

答案 1 :(得分:0)

正如马克贝克在评论中写道,“有意义”和“随机”很难汇集在一起​​。

但是,如果你想从给定的语言中显示一个真实的单词,而没有人能够提前猜出那个单词是什么,你可以按照以下方式进行(在伪代码中,没有时间写它以PHP):

read list of unique words in language into wordList
generate random integer i, <= length of wordList
return word at position i in wordList

考虑使用password dictionary作为词汇表的来源。

答案 2 :(得分:0)

ASPELLhttp://sourceforge.net/projects/wordlist/获取单词列表,将它们导入db表并通过php随机选择一个:)

示例查询:

SELECT word FROM dictionary order by RAND() LIMIT 1