fgets прекращает чтение строки на символе меньше (<), а не в конце строки - PullRequest
0 голосов
/ 22 сентября 2018
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
...