Как я могу перезаписать содержимое файла новым содержимым в PHP? - PullRequest
41 голосов
/ 26 сентября 2011

Я пытался использовать fopen, но мне удалось только добавить контент в конец файла. Можно ли перезаписать все содержимое новым содержимым в PHP?

Ответы [ 3 ]

70 голосов
/ 26 сентября 2011

Использование 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 +' Открыт для чтения и письма; поместите указатель файла в начале файла и обрежьте файл до нулевой длины. Если файл не существует, попытайтесь создать его.

1 голос
/ 22 января 2016
$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);
0 голосов
/ 10 мая 2017

МОЙ ПРЕДПОЧТИТЕЛЬНЫЙ МЕТОД использует fopen, fwrite и fclose [это будет стоить меньше ЦП]

$f=fopen('myfile.txt','w');
fwrite($f,'new content');
fclose($f);

Предупреждение для тех, кто использует file_put_contents

Это сильно повлияет на производительность, например [в том же классе / ситуации] file_get_contents тоже: если у вас БОЛЬШОЙ ФАЙЛ, он будет читать весь контентза один выстрел, и эта операция может занять много времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...