Подтвердить что ты не робот

Как я могу переписать содержимое файла новым контентом в PHP?

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

4b9b3361

Ответ 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: если у вас БОЛЬШОЙ ФАЙЛ, он прочитает весь контент за один раз, и эта операция может занять длительное время ожидания.