如何在不删除其他内容的情况下覆盖文件中的行


How to overwrite line in file without deleting other contents

示例联系人.txt文件:

doe, john, 123
smith, jane, 456
etc
etc
etc

如果我想用$handle = fopen("contacts.txt", "w");cooper, jones, 678覆盖smith, jane, 456

为什么它会删除smith, jane, 456 前后的所有行

fopen()可能不是最佳选择,尤其是使用w:

'w'仅限写作;将文件指针放在文件,并将文件截断为零长度。如果文件没有存在,尝试创建它。

对于大小合理的文件,这应该做到:

$data = file_get_contents('contacts.txt');
$data = str_replace('smith, jane, 456', 'cooper, jones, 678', $data);
file_put_contents('contacts.txt', $data, LOCK_EX);
相关文章: