Pendahuluan
Di dalam tutorial ini kita akan membahas tentang cara manipulasi file di dalam PHP menggunakan fungsi-fungsi bawaan. Mulai dari berbagai cara untuk membaca file, menulis, menimpa file yang sudah ada dan juga menghapusnya.
Pembahasan ini akan kita bagi menjadi dua bagian: bagian pertama akan membahas cara membaca dan membuka file di dalam PHP. Sedangkan fungsi-fungsi sisanya akan kita bahas pada pertemuan ke-2.
Memeriksa Ketersediaan File
Sebelum kita memulai membaca file, kita akan mengenal fungsi file_exists()
terlebih dahulu. Fungsi tersebut berfungsi untuk memeriksa apakah suatu file benar-benar exist atau tidak.
Jika file yang kita maksudkan ternyata memang ada, maka ia akan mengembalikan nilai true
, dan sebaliknya jika file yang kita maksud ternyata tidak ada, dia akan mengembalikan nilai false
.
Perhatikan contoh berikut:
<?php
if (file_exists('buah.txt')) {
// file ada
} else {
echo "File buah.txt tidak ditemukan <br>";
}
Jika file bernama buah.txt
tidak ada, maka blok kode else
yang akan dieksekusi oleh interpreter PHP.
Membaca File Dengan readfile()
Katakanlah kita memiliki sebuah file bernama buah.txt
. File tersebut berisi nama-nama buah di tiap barisnya:
Mangga
Jeruk
Apel
Durian
Anggur
Lalu kita akan membacanya dengan PHP. Cara pertama yang bisa kita lakukan adalah menggunakan fungsi readfile()
. Perhatikan contoh berikut:
<?php
echo readfile('buah.txt');
Fungsi readfile()
akan membaca semua baris dari file buah.txt
lalu diikuti ukuran file dalam satuan byte. Oleh karena itu kode program di atas akan menghasilkan output sebagai berikut:
Mangga Jeruk Apel Durian Anggur31
Fungsi readfile()
bukan lah fungsi yang disarankan untuk membaca file karena keterbatasan fitur-fiturnya.
Membaca File Dengan file_get_contents()
Cara yang kedua adalah dengan menggunakan fungsi file_get_contents()
. Fungsi tersebut bisa untuk membaca berbagai file, baik secara lokal mau pun global (maksudnya url suatu situs tertentu), dan juga bisa membaca berbagai format file baik itu gambar, teks, json, xml, dan lain-lain.
Kita akan coba membaca isi dari file buah.txt
. Perhatikan contoh program berikut:
<?php
echo file_get_contents('buah.txt');
Output:
Mangga Jeruk Apel Durian Anggur
Jika anda mengubah karakter \n
menjadi tag <br>
menggunakan fungsi nl2br2()
sebagaimana berikut:
<?php
echo nl2br(file_get_contents('buah.txt'));
Maka anda akan mendapatkan output yang sama persis dengan isi dari file buah.txt
:
Mangga
Jeruk
Apel
Durian
Anggur
Membaca File Dengan file()
Di antara fungsi bawaan PHP yang bisa kita gunakan untuk membaca keseluruhan isi file adalah fungsi bernama file()
. Ia melakukan tugas yang sama dengan fungsi file_get_contents()
.
Hanya saja, fungsi file()
mengembalikan konten dari suatu file dalam bentuk array untuk tiap barisnya. Berbeda dengan fungsi file_get_contents()
yang mengembalikan seluruh konten dari suatu file dalam bentuk string utuh.
Perhatikan contoh berikut:
<?php
$isiFileBuah = file('buah.txt');
echo '<pre>';
print_r($isiFileBuah);
echo '</pre>';
Output:
Array
(
[0] => Mangga
[1] => Jeruk
[2] => Apel
[3] => Durian
[4] => Anggur
)
Kita juga bisa menampilkannya dengan foreach
sebagaimana telah kita pelajari pada tutorial perulangan dan juga tutorial tentang manipulasi array.
Membaca File Dengan fopen()
, fread()
dan fclose()
Cara selanjutnya adalah dengan menggunakan fopen()
, fread()
dan fclose()
.
Cara ini lebih ribet dari sebelumnya, lebih banyak stepnya, tapi lebih direkomendasikan untuk kasus-kasus tertentu karena banyak fungsi yang bisa kita lakukan.
Skenario umumnya adalah 3 langkah:
- Kita buka file yang kita inginkan dengan fungsi
fopen()
- Setelah file kita buka, kita bisa membaca isi file tersebut dengan fungsi
fread()
. - Ketika proses selesai, kita bisa menutup file tersebut dan menghapusnya dari memori menggunakan fungsi
fclose()
.
Perhatikan contoh berikut, kita masih akan bermain-main dengan file buah.txt
:
<?php
$file = fopen('buah.txt', 'r');
if (!$file) {
die('File tidak ada');
}
# mulai baca file
echo fread($file, filesize('buah.txt'));
# tutup file agar ia dihapus dari memory
fclose($file);
Output:
Mangga Jeruk Apel Durian Anggur
Penjelasan
Dari kode program di atas, kita akan menjelaskan beberapa hal sebagai berikut:
- fungsi
fopen()
menerima dua parameter:- parameter pertama adalah nama file
- sedangkan parameter kedua adalah mode pembukaan file tersebut. Di dalam kode program di atas, kita menggunakan mode
r
yang artinya read. - Apa saja mode yang tersedia? Kita akan simak beberapa saat lagi.
- fungsi
fopen()
akan bernilaifalse
jika file yang kita maksud ternyata tidak ada. - fungsi
fread()
menerima 2 parameter:- parameter pertama yaitu hasil kembalian dari fungsi
fopen()
- dan parameter kedua berisi berapa byte yang akan dibaca dari file tersebut
- paramter kedua kita isi dengan fungsi
filesize('buah.txt')
agar isi file tersebut terbaca semuanya.
- parameter pertama yaitu hasil kembalian dari fungsi
- setelah proses yang berkaitan dengan variabel
$file
selesai, kita tutup dengan fungsifclose()
yang menerima parameter hasil kembalian dari fungsifopen()
.
Mode yang tersedia untuk fungsi fopen()
Mode | Deskripsi |
---|---|
r |
Membuka file dalam mode read only. |
w |
Membuka file dalam mode write only. Ia akan menghapus keseluruhan isi file dan menimpanya dengan yang baru, atau jika file tersebut belum pernah ada, ia akan membuatnya terlebih dahulu. |
a |
Membuka file dalam mode write only. Isi dari file yang sebelumnya tetap dipertahankan. |
x |
Membuat file baru dalam mode write only. Mengembalikan nilai false jika file telah ada sebelumnya. |
r+ |
Membuka file dalam mode read dan write. |
w+ |
Membuka file dalam mode read dan write. Menghapus konten file sebelumnya atau membuat file baru jika belum ada. |
a+ |
Membuka file dalam mode read dan write. Sama seperti w+ akan tetapi konten file yang sebelumnya tidak dihapus. |
x+ |
Membuka file dalam mode read dan write. Mengembalikan nilai false jika file telah ada sebelumnya. |
Membaca File Perbaris dengan fgets()
Selain menggunakan fungsi fread()
untuk membaca konten dari suatu file. Kita juga bisa menggunakan fungsi fgets()
.
Bedanya?
Jika menggunakan fread()
berarti kita akan membaca konten dari suatu file sesuai dengan ukuran byte yang kita definisikan. Sedangkan jika menggunakan fungsi fgets()
, maka kita membaca konten perbaris.
Perhatikan contoh berikut:
<?php
$file = fopen('buah.txt', 'r');
if (!$file) {
die('File tidak ada');
}
# mulai baca file
echo fgets($file) . '<br>'; # baris 1
echo fgets($file) . '<br>'; # baris 2
echo fgets($file) . '<br>'; # baris 3
echo fgets($file) . '<br>'; # baris 4
echo fgets($file) . '<br>'; # baris 5
# tutup file agar ia dihapus dari memory
fclose($file);
Kode program di atas akan menghasilkan output sebagai berikut:
Mangga
Jeruk
Apel
Durian
Anggur
Mengetahui Akhir Baris Suatu File
Dari kode program sebelum ini, kita tahu bahwa pointer dari proses pembacaan file akan berpindah dengan memanggil fungsi fgets()
. Sehingga kita bisa menampilkan semua baris dari suatu file dengan memanggil fgets()
sebanyak jumlah baris tersebut.
Akan tetapi, bagaimana caranya kita tahu bahwa pointer pembacaan file telah berada pada baris paling bawah?
Jawabannya adalah menggunakan fungsi feof()
. Kata eof sendiri adalah singkatan dari end-of-file. Fungsi tersebut akan mengembalikan nilai true
jika pointer berada pada baris paling akhir, dan jika tidak maka ia akan mengembalikan nilai false
.
Perhatikan kode program berikut:
<?php
$file = fopen('buah.txt', 'r');
if (!$file) {
die('File tidak ada');
}
# lakukan perulangan selama feof bernilai false
while (!feof($file)) {
echo fgets($file) . '<br>';
}
# tutup file agar ia dihapus dari memory
fclose($file);
Kesimpulan
Bahasa pemrograman PHP adalah bahasa yang berjalan di server. Sehingga proses manipulasi file adalah suatu hal yang hampir menjadi keniscayaan.
Untuk membaca file, kita bisa menggunakan beberapa cara. Mulai dari fungsi readfile()
, fungsi file_get_contents()
, fungsi file()
, fungsi fread()
dan juga fgets()
.
Pembahasan Selanjutnya
Pada pembahasan selanjutnya, insyaallah kita masih dalam pembahasan manipulasi file bagian kedua. Yaitu tentang membuat file baru, mengedit, dan juga menghapus.