如何使用 fopen 覆盖文本
$data = 'HHHHHHHHHHHHHHH';
$data2 = 'JJJJJJJJJJJJJJ';
$F = fopen('tbbbb.txt','w');
fwrite($F,$data);
fwrite($F,$data2);
fclose($F);
我想要的输出应该是
“JJJJJJJJJJJJJJJ”
在文件中
您可以使用以下fseek()
功能:
fwrite($F,$data);
fseek($F, 0);
fwrite($F,$data2);
用于rewind
返回到文件的开头。
fwrite($F,$data);
rewind($F);
fwrite($F,$data2);
生成的文件内容将是:
JJJJJJJJJJJJJJH
因为覆盖文件的开头并不能替换它之后的内容。您可以致电:
ftruncate($F, count($data2));
设置文件长度。
fwrite
将始终写入光标位置并将光标导航到下一行。因此,当您编写第一个字符串时,它将写入第一行并将光标导航到下一行。所以当前光标位置在第二行。因此,如果您想覆盖特定行,则必须覆盖seek
该行。
fseek($F, <byte_position>);
fwrite($F, <string>);
file_put_contents('file.txt', $data);
echo file_get_contents('file.txt'); // HHHHHHHHHHHHHHH
file_put_contents('file.txt', $data2);
echo file_get_contents('file.txt'); // JJJJJJJJJJJJJJ