я прочитал комментарий о feof()
по PHP руководство, ответ здесь на StackOverflow а также еще один ответ на StackOverflow.
Итак, я понял, что с помощью feof()
не означает использовать «хрустальный шар», чтобы волшебным образом узнать, есть ли еще символы или строки в потоке, как упоминалось во второй ссылке выше. Скорее, это тест, который показывает, провалилась ли операция ввода или нет (в данном случае меня интересует только операция ввода fgetc()
PHP). Так что последний прочитанный символ все равно будет в порядке. А ПОТОМ, feof()
из while(!feof($file_you_read_from))
все еще будет ложный просто потому что последний fgetc()
все еще удалось и после еще один цикл, где fgetc()
попытки прочитать и потерпеть неудачу, только тогда будет feof()
быть установленным правда. Я прав? Я что-то не так понял?
feof
в PHP работает так же, как C.
Если это false
затем он проверяет последнюю операцию, в противном случае возвращает кэшированное значение.
Проверяет, является ли индикатор конца файла, связанный с потоком,
установить, возвращая значение, отличное от нуля, если оно есть.Этот индикатор обычно устанавливается предыдущей операцией в потоке
который пытался прочитать в конце файла или после него.Обратите внимание, что индикатор внутренней позиции потока может указывать на
конец файла для следующей операции, но все же конец файла
индикатор не может быть установлен, пока операция не попытается прочитать на этом
точка.Этот индикатор очищается вызовом clearerr, rewind, fseek,
fsetpos или freopen. Хотя, если индикатор положения не
переставлен таким вызовом, скорее всего, установится следующая операция ввода / вывода
индикатор снова.
Других решений пока нет …