2011-09-26 9 views
29

Próbowałem użyć programu fopen, ale udało mi się dołączyć zawartość do końca pliku. Czy jest możliwe zastąpienie całej zawartości nową treścią w PHP?Jak mogę nadpisać zawartość pliku nową treścią w PHP?

+0

Brzmi jak dawniej „a” tryb w wypadku. Upewnij się, że używasz trybu "w": * Otwórz tylko do pisania; umieść wskaźnik pliku na początku pliku i skróć plik do zerowej długości. Jeśli plik nie istnieje, spróbuj go utworzyć. * – animuson

Odpowiedz

56

Zastosowanie 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 

Ewentualnie, jeśli utkniesz z fopen() można użyć w lub w+ tryby:

'W' Otwiera tylko do zapisu; umieść wskaźnik pliku na początku pliku i skróć plik do zerowej długości. Jeśli plik nie istnieje, spróbuj go utworzyć.

'w +' Otwarta do czytania i pisania; umieść wskaźnik pliku na początku pliku i skróć plik do zerowej długości. Jeśli plik nie istnieje, spróbuj go utworzyć.

+5

'fopen' jest właściwym narzędziem w wielu przypadkach. 'file_put_contents' i' file_get_contents' są często nadużywane w przypadku dużych ciągów, co szkodzi wydajności. –

+6

file_put_contents nie zastępuje istniejącej treści dla mnie, tylko dołącza ją do końca. – dlofrodloh

1
$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); 
+5

Chociaż może to odpowiedzieć na pytanie, lepiej podać kilka wyjaśnień na temat tego, w jaki sposób ten kod pomaga. – vard

1

Ewentualnie, jeśli masz pełną kontrolę nad swoim serwerze, to dlaczego nie „gwarancja” operacja szczypanie go dookoła, zanim usunięcie pliku?

$wait=exec('rm -r -f myfile.txt'); 
file_put_contents('myfile.txt','new content'); 

W $ czekać jest tu po prostu trzymać Komenda usunąć dopóki nie zostanie zrobione

Powiązane problemy