PHP - 删除文件的最后一个字符

sul*_*man 10 php file-io trim

我有一个小的PHP脚本,删除文件的最后一个字符.

$contents = file_get_contents($path);
rtrim($contents);
$contents = substr($contents, 0, -1);
$fh = fopen($path, 'w') or die("can't open file");
fwrite($fh, $contents);
fclose($fh);    
Run Code Online (Sandbox Code Playgroud)

因此,它读取文件内容,剥离最后一个字符,然后截断文件并将字符串写回它.一切正常.

我担心这个文件可能包含大量数据,然后file_get_contents()调用会将所有这些数据保存在内存中,这可能会最大化我的服务器内存.

有没有更有效的方法从文件中删除最后一个字符?

谢谢

aza*_*zat 22

试试这个

$fh = fopen($path, 'r+') or die("can't open file");

$stat = fstat($fh);
ftruncate($fh, $stat['size']-1);
fclose($fh); 
Run Code Online (Sandbox Code Playgroud)

如需更多帮助,请参阅此处

  • 如果要在修剪尾随字符后添加字符,则需要使用“fseek()”到当前大小。如果不这样做,您将在文件的新大小和旧大小之间得到空字符。`$position = fstat($fh)['size'] - 1;` `ftruncate($fh, $position);` `fseek($fh, $position);` (5认同)