Я попытался использовать fopen, но мне удалось добавить контент в конец файла. Можно ли перезаписать все содержимое новым контентом в PHP?
Как я могу переписать содержимое файла новым контентом в PHP?
Ответ 1
Используйте file_put_contents()
file_put_contents('file.txt', 'bar');
echo file_get_contents('file.txt'); // bar
file_put_contents('file.txt', 'foo');
echo file_get_contents('file.txt'); // foo
В качестве альтернативы, если вы застряли в fopen()
, вы можете использовать режимы w
или w+
:
'w' Открыт только для записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины. Если файл не существует, попытайтесь его создать.
'w +' Открыт для чтения и записи; поместите указатель файла в начало файла и обрезайте файл до нулевой длины. Если файл не существует, попытайтесь его создать.
Ответ 2
$fname = "database.php";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));
$content = str_replace("192.168.1.198", "localhost", $content);
$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);
Ответ 3
МОЙ ПРЕДПОЧТИТЕЛЬНЫЙ МЕТОД использует fopen, fwrite и fclose [это будет стоить меньше CPU]
$f=fopen('myfile.txt','w');
fwrite($f,'new content');
fclose($f);
Предупреждение для тех, кто использует file_put_contents
Это сильно повлияет на производительность, например, [для того же класса/ситуации] file_get_contents: если у вас БОЛЬШОЙ ФАЙЛ, он прочитает весь контент за один раз, и эта операция может занять длительное время ожидания.