Bagaimana cara menulis ke dalam file di PHP?


108

Saya memiliki skrip ini di satu server pendukung PHP gratis:

<html>
<body>

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


fclose($file);
?>

</body>
</html>

Ini membuat file lidn.txt, tapi kosong.

Bagaimana cara membuat file dan menulis sesuatu ke dalamnya, misalnya baris "Kucing mengejar tikus"?

Jawaban:


153

Anda dapat menggunakan fungsi tingkat yang lebih tinggi seperti:

file_put_contents($filename, $content);

yang identik dengan memanggil fopen(), fwrite()dan fclose()berturut-turut untuk menulis data ke file.

Docs: file_put_contents


3
Sekadar catatan samping, hanya file_put_contents()berfungsi di PHP5. Tidak tampak seperti masalah dalam kasus ini (jawaban Anda semakin diterima), tetapi mungkin masih ada beberapa host di luar sana yang menjalankan PHP4.x.
Duroth

2
Catatan penting yang sangat penting: file_put_contents () adalah mimpi buruk memori dibandingkan dengan fopen (). Saya suka menggunakannya, tetapi saat menangani file besar Anda ingin dapat "mengalirkan" data ke dalamnya. PHP akan membutuhkan beberapa besar ukuran file akhir sebagai memori internal, jadi ingatlah itu saat menggunakan fungsi ini. Untuk jumlah data yang lebih kecil, saya akan merekomendasikannya untuk penggunaan yang mudah.
Yohanes

1
Kemudian gunakan file_put_contents ($ filename, $ other_stream). Ini sama dengan menggunakan stream_copy_to_stream-), yang sangat hemat memori.
Savageman

@ Duroth itu bekerja hanya di PHP5 atau hanya bekerja dari PHP5? itu adalah 2 hal yang berbeda.
Xsmael

2
@Xsmael Tidak di masa lalu tahun 2009;) PHP7 tidak ada saat itu. Tapi ya, put_file_contents()pertama kali diperkenalkan di PHP5, dan sejak itu telah disertakan, di versi yang lebih baru.
Duroth

88

Pertimbangkan fwrite () :

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

Anda dapat menggunakan kode di atas juga Anda dapat menggunakan file_put_contents untuk detail tentang cara membaca dan menulis file Anda dapat merujuk ke techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish setelah menulis ke file seperti di atas bagaimana kita membaca file tanpa menutup file ( fclose($fp) ), saya mencoba $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');tetapi tidak ada yang berhasil
Kasun Siyambalapitiya


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

Kau gunakan fwrite()


setelah menulis ke file seperti di atas bagaimana kita membaca file tanpa menutup file ( fclose($fh)), saya mencoba dengan $fh = fopen('lidn.txt', 'w+');, `$ fh = fopen ('lidn.txt', 'a +'); `` tapi tak satu pun dari mereka berhasil
Kasun Siyambalapitiya


6

Saya menggunakan kode berikut untuk menulis file di direktori web saya.

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);
}
?>

Ini adalah naskah kerja. pastikan untuk mengubah url dalam bentuk tindakan dan file target dalam fungsi fopen () jika Anda ingin menggunakannya di situs Anda.

Semoga berhasil.


1
Saya baru saja mulai menulis php tetapi ini sepertinya Anda tidak hanya menulis file teks, tetapi Anda sedang menulis file kode php ke server Anda, yang kemudian dapat dijalankan segera setelahnya dengan merujuk ke URL "demo.php". Seseorang dapat menulis kode PHP berbahaya ke server Anda dan segera menjalankannya, bukan? Saya berasumsi ini agar Anda dapat menguji kode Anda sendiri tetapi orang harus diperingatkan tentang risiko penerapan khusus ini. (Karena itu, saya menyukainya dan akankah kita melakukannya sendiri)
RufusVS

6

Untuk menulis ke file di PHPAnda perlu melalui langkah-langkah berikut:

  1. Buka file

  2. Tulis ke file

  3. Tutup file

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

Berikut langkah-langkahnya:

  1. Buka file
  2. Tulis ke file
  3. Tutup file

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()adalah sedikit lebih cepat dan file_put_contents()hanya pembungkus di sekitar ketiga metode tersebut, jadi Anda akan kehilangan overhead. Artikel

file_put_contents (file, data, mode, konteks):

The file_put_contentsmenulis string ke file.

Fungsi ini mengikuti aturan ini saat mengakses file. Jika FILE_USE_INCLUDE_PATH diatur, periksa jalur penyertaan untuk salinan nama file Buat file jika tidak ada kemudian Buka file dan Kunci file jika LOCK_EX diatur dan Jika FILE_APPEND diatur, pindah ke akhir file. Jika tidak, hapus konten file Tulis data ke dalam file dan Tutup file dan lepaskan semua kunci. Fungsi ini mengembalikan jumlah karakter yang ditulis ke dalam file jika berhasil, atau FALSE jika gagal.

fwrite (file, string, length):

The fwritemenulis untuk fungsi file.The terbuka akan berhenti pada akhir file atau saat mencapai panjang tertentu, mana yang first.This berfungsi kembali jumlah byte yang ditulis atau FALSE pada kegagalan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.