PHP:fread的字节数

时间:2011-05-27 21:10:01

标签: php io fread

假设我读了这么多字节:

$data = fread($fp, 4096);

由于fread如果到达文件末尾将停止读取,我怎么能确切知道读取了多少? strlen($data)会有效吗?或者这可能是错误的?


我想要完成的是读取一些字节,然后在我阅读之前回到原来的位置。我试图避免使用算术(ftellfreadftell,减法,fseek),因为文件可能会大于PHP_INT_MAX并且可能搞砸了。我想要的只是做fseek($fp, -$bytes_read, SEEK_CUR),但为此我需要知道我刚刚读了多少字节......

2 个答案:

答案 0 :(得分:5)

fread使用ftell($fp)获取当前文件位置后。

答案 1 :(得分:3)

检查此项(未经测试):

mb_strlen($data, '8bit')

第二个参数'8bit'强制函数返回字节数。

php manual for mb_strlen的评论中找到。