PHP:读取的字节数

发布于 2024-11-10 11:14:51 字数 439 浏览 6 评论 0原文

假设我读取了这样的字节数:

$data = fread($fp, 4096);

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


我想要完成的是读取多个字节,然后返回到读取之前的位置。我试图避免使用算术(ftellfreadftell、subract、fseek),因为文件可能大于 PHP_INT_MAX 并且可能会造成混乱。我想要的只是执行 fseek($fp, -$bytes_read, SEEK_CUR),但为此我需要知道我刚刚读取了多少字节......

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...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌吟 2024-11-17 11:14:51

After fread use ftell($fp) to get the current file position.

残龙傲雪 2024-11-17 11:14:51

检查这一点(未经测试):

mb_strlen($data, '8bit')

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

mb_strlen 的 php 手册 的评论中找到。

Check this (untested):

mb_strlen($data, '8bit')

The second argument '8bit' forces the function to return the number of bytes.

Found in comments at php manual for mb_strlen.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文