我有一个文本文件,我需要选择一个长度超过 6 个字符且小于 10 个字符的随机字符串。通常,我会使用类似 this 的脚本,这可行,但由于它需要一定的长度,所以行不通。有人对此有解决方案吗?
示例输入是这样的:
Apple
Banana
Orange
Strawberry
Blueberry
Pineapple
Somelongfruithere
这些值将在一个 .txt 文件中,每个文件都有一个换行符。允许使用的字符串示例是 pineapple
,但不允许使用 apple
或 Somlongfruithere
。
最佳答案
你需要做这样的事情:
$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 个字符之间的行复制到另一个数组。从该数组中选择一个随机元素时,“保证”您对任何随机字符串都有合理的访问时间。
第二个选项只是继续选择一个随机字符串,直到选择了一个合适的长度,但可能可能需要一段时间,具体取决于随机数生成器的心情。不太可能,但我不想冒险。在我的书中,始终将可靠性视为最佳方法。
关于php - 从文本文件中选择 6 个以上 10 个字符以下的随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10201834/