0

如何使用 fopen 覆盖文本

$data = 'HHHHHHHHHHHHHHH';
$data2 = 'JJJJJJJJJJJJJJ';

$F = fopen('tbbbb.txt','w');
fwrite($F,$data);
fwrite($F,$data2);
fclose($F);

我想要的输出应该是

“JJJJJJJJJJJJJJJ”

在文件中

4

4 回答 4

1

您可以使用以下fseek()功能:

fwrite($F,$data);
fseek($F, 0);
fwrite($F,$data2);
于 2013-07-20T05:25:39.210 回答
1

用于rewind返回到文件的开头。

fwrite($F,$data);
rewind($F);
fwrite($F,$data2);

生成的文件内容将是:

JJJJJJJJJJJJJJH

因为覆盖文件的开头并不能替换它之后的内容。您可以致电:

ftruncate($F, count($data2));

设置文件长度。

于 2013-07-20T05:26:30.523 回答
0

fwrite将始终写入光标位置并将光标导航到下一行。因此,当您编写第一个字符串时,它将写入第一行并将光标导航到下一行。所以当前光标位置在第二行。因此,如果您想覆盖特定行,则必须覆盖seek该行。

fseek($F, <byte_position>);
fwrite($F, <string>);
于 2013-07-20T05:27:45.273 回答
-1

使用file_put_contents()

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
于 2013-07-20T05:28:51.877 回答