Say I read a number of bytes like this:
$data = fread($fp, 4096);
Since fread will stop reading if it reaches the end of the file, how can I know exactly how much was read? Would strlen($data) work? Or could that be potentially wrong?
What I’m trying to accomplish, is to read a number of bytes, and then go back to where I was before I read. And I’m trying to avoid using arithmetic (ftell, fread, ftell, subract, fseek), since a file could potentially be larger than PHP_INT_MAX and potentially mess that up. What I would want is to just do fseek($fp, -$bytes_read, SEEK_CUR), but for that I need to know how many bytes I just read…
Check this (untested):
The second argument
'8bit'forces the function to return the number of bytes.Found in comments at php manual for mb_strlen.