PHP: Baca File per Baris


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? 🙂

Advertisements

16 thoughts on “PHP: Baca File per Baris

  1. 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.

  2. 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

  3. yang saya mau tanyakan hampir sama dengan mas ferdian,
    gimana cara baca file jika antar host gitu…
    terima kasih kl ada solusinya mohon bantuannya 😀

  4. 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.

  5. 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

    ^_^

  6. 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

  7. 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..:)

  8. 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.