次のようなことをする必要があります。
$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文字の行のみを別の配列にコピーします。この配列からランダムな要素を選択すると、任意のランダムな文字列に対する妥当なアクセス時間が「保証」されます。
2番目のオプションは、適切な長さの1つが選択されるまでランダムな文字列を選択し続けますが、乱数ジェネレーターのムードによっては時間がかかる可能性があります。可能性は低いですが、私はそれを危険にさらしたくありません。私の本では、常に信頼性を最善のアプローチとしてとらえています。