你需要做这样的事情:
$lines = array();
$tmpLines = file('random.txt');
for($i = 0; $i < count($tmpLines); ++$i)
{
if(strlen($tmpLines[ $i ]) > 6 && strlen($tmpLines[ $i ]) < 10)
{
$lines[] = $tmpLines[ $i ];
}
}
$randomWord = $lines[ array_rand($lines) ];
一种更短的方法,在行数上,是这样的(但安全性要低得多):
$randomWord = '';
$lines = file('random.txt');
while(strlen($randomWord) <= 6 || strlen($randomWord) >= 10)
$randomWord = $lines[ array_rand($lines) ];
第一个选项获取文件中的所有行,并且仅将长度在 6 到 10 个字符之间的行复制到另一个数组。从这个数组中选择一个随机元素时,您“保证”了任何随机字符串的合理访问时间。
第二个选项只是继续选择一个随机字符串,直到选择一个合适的长度,但可能需要一段时间,具体取决于随机数生成器的心情。不太可能,但我不想冒险。在我的书中,始终将可靠性作为最好的方法。