Langkah pertama dalam membaca file di PHP adalah membuka file menggunakan perintah fopen yang parameternya adalah nama file yang akan dibuka dan atribut (tanda) yang menunjukkan akan diapakan file yang terbuka nanti, ditulis, dibaca atau ditambahkan data baru. Membaca file seperti sebelumnya hanya berdasarkan byte, bagaimana agar dapat membaca per baris?
Fungsi fgets()
Fungsi fgets() digunakan untuk membaca sebaris data dari file. Menggunakan fungsi ini kita juga dapat membaca sejumlah karakter dalam file. Bentuk dari fungsi ini adalah
fgets ($handle, $length);
Parameter pertama adalah file handle atau pointer ($handle) dan kedua adalah (opsional) jumlah byte ($length) yang akan dibaca dalam sekali panggil. Jika parameter kedua dikosongkan, fungsi akan membaca sampai akhir baris.
Catatan:
Jika panjang baris lebih dari 1024 karakter, sebaiknya membaca maksimum 1024 karakter terlebih dahulu agar lebih hemat memory.
Berikut ini adalah beberapa contoh.
Membaca baris teks
Kode berikut membaca satu baris lengkap dari suatu file dan menyimpannya dalam format string. Script pertama menempatkan pointer pada awal file, dan kemudian membaca baris pertama:
<?php $fh = fopen("myfile.txt", "r"); $line = fgets($fh); echo $line; fclose($fh); ?>
Terlihat jelas perintah fgets tidak menerima parameter kedua, tidak ditentukan berapa panjang baris akan dibaca alias dibaca lengkap.
Ingat, modus ‘r’ berarti bahwa file yang dibuka hanya untuk dibaca.
Membaca Sejumlah Byte
Mirip seperti tulisan sebelumnya yang menggunakan perintah fread untuk membaca file, kali ini mendapatkan sekian byte string dari file menggunakan perintah fgets.
<?php $fh = fopen("myfile.txt", "r"); $str = fgets($fh, 16); echo $str; $line2 = fgets($fh, 16); echo $str; fclose($fh); ?>
Kode di atas membaca 16 karakter pertama dan kemudian membaca 16 karakter berikutnya, kemungkinan masih pada baris yang sama, jika panjang teks lebih atau sama dengan 32 karakter.
Membaca Baris demi Baris
Fungsi fgets dapat pula digunakan untuk membaca baris demi baris string dalam file secara lengkap, cukup dikombinasikan dengan pernyataan while untuk mendeteksi apakah pointer telah sampai di akhir file.
Contoh 1:
<?php $fh = fopen("myfile.txt", "r"); while(true) { $line = fgets($fh); if($line == null)break; echo $line; } fclose($fh); ?>
Contoh 2, apa bedanya?:
<?php $fh = fopen("myfile.txt", "r"); while (!feof($fh)) { $line = fgets($fh); echo $line; } fclose($fh); ?>
Membaca isi file sekaligus
Kita juga dapat membaca suatu file dalam sekali. Perintah yang dapat digunakan, selain fread yang dikombinasikan dengan filesize, juga file_get_contents().
Contohnya adalah sebagai berikut:
<?php $fh = fopen("myfile.txt", "r"); $file = file_get_contents("myfile.txt"); echo $file; ?>
Kode di atas akan membaca seluruh isi file myfile.txt dan menyimpannya ke dalam varibel string $file. Hati-hati, jika anda membaca file yang berukuran sangat besar…sangat dianjurkan untuk tidak membacanya sekaligus. Pengunjung web anda tentu akan kelamaan menanti jika script membaca file berukuran di atas 1 MB, dan mungkinkah pula web browsernya hang? 🙂
dlm script “$fh = fopen (“myfile.txt”,”r”);” dijelaskan nama file yang dibuka adalah my file.txt yang dimana file tersebut adalah 1 directory dengan file dimana kita menyimpan file yang kita buat ini.kemudian yang ingin saya tanyakan, bagaimana jika ingin membuka file, tapi online. contohnya saja seperti membuka “http:localhost/domain/file.txt”? terima kasih sebelumnya.
assalamualaikum wr,wb
artikelnya bagus,mohon bantuannya ada yang saya ingin tanyakan bagaimana caranya mengambil file dari url?
bisakah tftp digunakan oleh php?adakah scriptnya?
terimakasih
wassalam
ini yang saya cari….
terimakasih tutorialnya
thanx bro buat tutorialnya… rekomen banget deh buat belajar… 😀
sip, thanks bro….
yang saya mau tanyakan hampir sama dengan mas ferdian,
gimana cara baca file jika antar host gitu…
terima kasih kl ada solusinya mohon bantuannya 😀
gan klok fungsi untuk membaca karakter string yang sama kemudian di hapus karakter yang sama terus di update gi mana gan.
ex :
saya pergi ke pasar // baris pertaman
kamu sama saya harus ke pantai //baris ke dua
nah kat kata (saya) yang ada di ke dua baris tersebut mau di ganti dengan (kami). tapi tidak mengganggu string yang lain gi mana gan:
mohon bantuannyah.
Salam kenal sob, trims infonya sangat bermanfaat banget nih.
tutorial yang keren,…
nih ada script untuk menyimpan isi directori file ke dalam file .txt
<?php
//Open images directory
$dir = opendir("./");
//List files in images directory
while (($file = readdir($dir)) !== false)
{
echo"Tambah data”;
$buka=fopen(“./liat.txt”, “a+”);
$tambahan=””.$file.”\n”;
fputs($buka, $tambahan);
if(fputs){
echo”data tambahan sukses dimasukkan.”;
}
}
closedir($dir);
?>
semoga membantu
^_^
kalau file txtnya berisi karakter ascii gimana bang?
YM!: radityobagusnimpuno@yahoo.com
kalo script untuk membaca file dari folder & drive tertentu, gimana bro ???
Misal, ane mau ngebaca file dgn nama 009101-01082012-0001.txt.
file tsb disimpan di drive E:/101/01082012/.
sedangkan folder dalam drive E:/, itu ada banyak folder, folder 101,102,103,dst…
selain itu, dalam setiap folder tadi, juga terdapat folder lain, contoh, 01082012, 02082012, 03082012, dst…
nah, ane bingung script phpnya untuk ngebaca file dari drive diluar drive installan xampp ini.
For info, ane install xampp nya di C:/xampp/htdocs/search/…
Mohon petunjuk
Nice tutorial … Jelas Banget Penjelasannya ..
bagaimana caranya jika ingin mengedit data pada file tersebut di baris tertentu.
Misal, saya punya file latihan.txt.
Isinya:
====================
aku sedang belajar
aku bermain gitar
====================
kemudian sy hanya akan mengedit kata ‘gitar’ menjadi ‘biola’. bagaimana script nya?…
mohon pencerahannya thanks..:)
yg baca perbaris masih bingung ane gan :v
makasih mas bro pencerahannya. gimana caranya tuh biar cepet kalo filenya di atas 1mb?
aku sedang belajar
aku bermain gitar
====================
kemudian sy hanya akan mengedit kata ‘gitar’ menjadi ‘biola’. bagaimana script nya?…
mohon pencerahannya thanks..:)
kalimatlama=”aku bermain gitar”
kalimat_baru=str_replace(‘gitar,’biola’,”kalimatlama”)
ini untuk satu kalimat dan satu baris,,,
butuh perintah while untuk mengambil baris perbaris,,
dan mohon cari info mengenaai str_replace
sebab saya sedikit lupa