2011-09-26 10 views
29

Fopen kullanmayı denedim, ancak içeriği yalnızca dosya sonuna ekledim. Tüm içeriğin PHP'deki yeni içeriğin üzerine yazılması mümkün mü? Eğer fopen() ile sıkışmış eğerPHP'deki yeni içerikle dosya içeriklerini nasıl üzerine yazabilirim?

+0

Sesler bitmiş olur dek kaldır komutunu tutmak için adildir. 'W' modunu kullandığınızdan emin olun: * Sadece yazma için açın; Dosya işaretçisini dosyanın başına yerleştirin ve dosyayı sıfır uzunluğuna kırpın. Dosya mevcut değilse, oluşturmaya çalışın. * – animuson

cevap

56

Kullanım file_put_contents() Alternatif

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 

, sen w veya w+ modlarını kullanabilirsiniz: sadece yazmak için Açık 'w'

; Dosya işaretçisini dosyanın başına yerleştirin ve dosyayı sıfır uzunluğuna kırpın. Dosya mevcut değilse, oluşturmayı deneyin.

'w +' Okuma ve yazma için açın; Dosya işaretçisini dosyanın başına yerleştirin ve dosyayı sıfır uzunluğuna kırpın. Dosya mevcut değilse, oluşturmayı deneyin. Eğer sunucunun tam denetime sahip Alternatif eğer

+5

'fopen' birçok durumda doğru araçtır. 'file_put_contents' ve' file_get_contents' genellikle performansa zarar veren büyük dizeler için yanlış kullanılır. –

+6

file_put_contents, benim için mevcut içeriğin üzerine yazmaz, sadece sonuna kadar ekler. – 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

Bu soruya cevap verebilir, ancak bu kodun nasıl yardımcı olduğuyla ilgili bazı açıklamalar vermek daha iyidir. – vard

1

, neden "garanti" işlemi önce dosyayı kaldırarak etrafında verdiği olmasın?

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

$ burada bekle sen kaza 'a' modunu eskisi gibi

İlgili konular