2009-11-20 28 views
42

Bir serbest PHP suppoting sunucuda bu komut dosyası vardır:PHP'de bir dosyaya nasıl yazılır?

<html> 
<body> 

<?php 
$file = fopen("lidn.txt","a"); 


fclose($file); 
?> 

</body> 
</html> 

o lidn.txt dosyası oluşturmak, ama boş.

Bir dosya oluşturmak ve içine bir şeyler yazmak istiyorum, Örneğin bu satır "Cats chase fareler", nasıl yapabilirim?

cevap

53

Ayrıca gerçekten iyi bir iş yapan file_put_contents($filename, $content) gibi daha üst düzey bir işlev de kullanabilirsiniz!

+3

Sadece bir sidenote,' file_put_contents() 'sadece PHP5'te çalışır. Bu durumda bir sorun gibi görünmüyor (sizin cevabınız, sonuçta accepter), ama hala orada PHP4.x çalışan birkaç ana olabilir. – Duroth

+0

Çok önemli bir sidenote: file_put_contents(), fopen() ile karşılaştırıldığında bir bellek kabusu. Kullanmayı seviyorum ama büyük dosyaları ele alırken, verileri "akışa" aktarabilmek istiyorsunuz. PHP, dahili bellek olarak çok sayıda son dosya boyutunu gerektirecektir, bu nedenle bu işlevi kullanırken bunu göz önünde bulundurun. Daha az miktarda veri için kolay kullanımı için tavsiye ederim. – John

+0

Daha sonra file_put_contents ($ filename, $ other_stream) kullanın. Çok bellek verimli olan stream_copy_to_stream-) ile aynıdır. – Savageman

37

Kullanım fwrite()

<?php 
$fp = fopen('lidn.txt', 'w'); 
fwrite($fp, 'Cats chase mice'); 
fclose($fp); 
?> 
+0

Çok teşekkür ederim! – brilliant

+0

Yukarıdaki kodu kullanabilirsiniz Ayrıca, dosya okuma ve yazma hakkında ayrıntılı bilgi için file_put_contents kullanabilirsiniz http://www.techflirt.com/file-handling-in-php –

+0

Dosyaya yazdıktan sonra @sathish Yukarıdaki gibi dosyayı ("fclose ($ fp)') kapatmadan dosyayı nasıl okuyoruz, $ fp = fopen ('lidn.txt', 'w +'); ',' fp = fopen ('lidn.txt', 'a +'); 'ama ikisi de hiçbiri dosyaya yazmadan –

6
$text = "Cats chase mice"; 
$filename = "somefile.txt"; 
$fh = fopen($filename, "a"); 
fwrite($fh, $text); 
fclose($fh); 

kullanabilirsiniz fwrite() O dosyası yazmak kolaydır

+0

dosyasını çalıştırarak dosyayı nasıl kapatmadan okuduğumuzu (' fclose ($ fh) '), $ ile denedim fh = fopen ('lidn.txt', 'w +'); ', fh = fopen ('lidn.txt', 'a +'); 'ama ikisi de çalışmamış –

6

:

$fp = fopen('lidn.txt', 'w'); 
fwrite($fp, 'Cats chase mice'); 
fclose($fp); 
3

Web dizinimde dosya yazmak için aşağıdaki kodu kullanıyorum.

write_file.html

<form action="file.php"method="post"> 
<textarea name="code">Code goes here</textarea> 
<input type="submit"value="submit"> 
</form> 

write_file.php

<?php 
// strip slashes before putting the form data into target file 
$cd = stripslashes($_POST['code']); 

// Show the msg, if the code string is empty 
if (empty($cd)) 
    echo "Nothing to write"; 

// if the code string is not empty then open the target file and put form data in it 
else 
{ 
    $file = fopen("demo.php", "w"); 
    echo fwrite($file, $cd); 

    // show a success msg 
    echo "data successfully entered"; 
    fclose($file); 
} 
?> 

Bu çalışma komut dosyasıdır. Sitenizde kullanmak istiyorsanız, URL'yi biçimindeki eylemi ve hedef dosyada fopen() işlevinde değiştirdiğinizden emin olun.

İyi şanslar.

+0

Sadece php yazmaya başladım, ancak bu sadece bir metin dosyası yazmak değil, sunucunuza bir php kod dosyası yazıyorsunuz. Bu, daha sonra "demo.php" URL'sine başvurularak hemen çalıştırılabiliyor. Birisi sunucunuza kötü amaçlı PHP kodu yazabilir ve hemen çalıştırabilir, değil mi? Bunun kendi kodlarınızı test edebildiğinizi, ancak insanların bu özel uygulamanın riskleri konusunda uyarılmaları gerektiğini varsayalım. (Bu söylendiği gibi, onu sevdim ve kendim yapacağız) – RufusVS

1

fwrite() smidgen daha hızlı ve file_put_contents() sadece bu üç yöntem etrafında bir sarıcı olduğunu, bu nedenle ek yükünü kaybedersiniz. Article

file_put_contents (dosya, veri, mod, bağlam):

file_put_contents bir dosyaya bir dize yazar.

Bu fonksiyon ayarlanmış bir file.If FILE_USE_INCLUDE_PATH erişen bu kurallara uyar, o zaman mevcut dosyayı açın ve LOCK_EX ise dosyayı kilitle değilse dosyası oluşturun dosya adının bir kopyasını yolu dahil kontrol set ve FILE_APPEND ayarlanmışsa, dosyanın sonuna taşıyın. Aksi halde, dosya içeriğini temizleyin Verileri dosyaya yazın ve Dosyayı kapatın ve kilitleri serbest bırakın. Bu işlev, başarı ile dosyaya yazılan karakterin numarasını veya hata durumunda FALSE değerini döndürür.

fwrite (dosya, dize, uzunluk): Bu belirtilen uzunluk ulaştığında fwrite açık file.The işlevine yazar

, dosyanın sonuna yada herhangi hangisi önce gelirse, bu işlev başarısız olduğunda yazılmış olan bayt sayısını veya FALSE değerini döndürür.

İlgili konular