PHP: Количество свободных байтов
Допустим, я прочитал такое количество байтов:
$data = fread($fp, 4096);
Поскольку fread
прекратит чтение, если оно достигнет конца файла, как я могу точно узнать, сколько было прочитано? Будет ли strlen($data)
работать? Или это может быть потенциально неправильно?
Чего я пытаюсь добиться, так это прочитать несколько байтов, а затем вернуться туда, где я был до того, как прочитал. И я стараюсь избегать использования арифметики (ftell
, fread
, ftell
, сократить, fseek
), так как файл потенциально может быть больше, чем PHP_INT_MAX
и потенциально все испортит. Я бы хотел просто сделать fseek($fp, -$bytes_read, SEEK_CUR)
, но для этого мне нужно знать, сколько байтов я только что прочитал...
2 answers
Проверьте это (непроверенное):
mb_strlen($data, '8bit')
Второй аргумент '8bit'
заставляет функцию возвращать количество байтов.
Найдено в комментариях к руководство по php для mb_strlen.
После fread
использовать ftell($fp)
чтобы получить текущую позицию файла.