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

时间:2016-04-07 19:30:46

标签: php

示例contacts.txt文件:

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

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

为什么它会删除smith, jane, 456

之前和之后的所有行

1 个答案:

答案 0 :(得分:2)

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);