function getRandLineFromFile($fileName)
{
$hendel = fopen($fileName, 'r+');
if (!$hendel)
return '';
$cLineCount = 0;
$sLineOut = '';
while (!feof($hendel)) {
$cLineCount++;
$sLine = fgets($hendel);
if (rand(1, $cLineCount) == $cLineCount) {
$sLineOut = $sLine;
}
}
return $sLineOut;
}
Если вы попытаетесь прочитать строку из файла, который имеет меньший символ (<), то fgets обрезает строку перед этим символом, а не до конца строки. </p>
Пример строкив файле:
wordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordword<twotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwotwo
результат:
wordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordwordword