Implementasi Algoritma Pencocokan String Knuth Morris Pratt Dalam Aplikasi
Ensiklopedia Hadits Imam Bukhari Berbasis Web
Mulyadi 1* Rangga Ryoza 2
1,2 Jurusan Teknologi Informasi dan Komputer Politeknik Negeri Lhokseumawe
1* Mulyadi@pnl.ac.id (penulis korespondensi)
2 ranggaryoza@gmail.com
Abstrak— Perkembangan  teknologi  informasi  berbasis  inovasi  user-friendly  telah  mempengaruhi  literasi  digital  yang  menuntut  kenyaman pengguna  dalam  mengaksesnya. Hadis  merupakan  salah  satu  unsur  terpenting  dalam  agama  Islam  yang  terdiri  lebih  dari  ratusan  ribu hadis dan tersusun dalam lembaran-lembaran yang disimpan pada tempat-tempat tertentu. Imam Bukhari merawi lebih dari  7000 hadis. Banyaknya lembaran-lembaran  hadis  menyulitkan  pengguna  untuk  melakukan  pencarian  suatu  pokok  pembahasan.  Pembuatan  aplikasi  ensiklopedia hadits imam Bukhari berbasis Web menggunakan  algoritma Knuth-Morris-Pratt sebagai solusi untuk pencarian pembahasan yang ada pada hadis  dengan  cepat.  Aplikasi  ini  dibuat  menggunakan framework  codeigniter dalam  memuat  halaman  web.  Perancangan  sistem  aplikasi ensiklopedia Hadis ini menggunakan UML( Unified Modeling Languange ). Sistem berhasil melakukan pencarian data menggunakan algoritma Knuth-Morris-Pratt. Dari 10 kali percobaan pencarian yang dilakukan, diperoleh waktu rata-rata sebesar 2.7457 detik dan seluruh kata kunci berhasil ditemukan.
Abstract— The  development  of  user-friendly  innovation-based  information  technology  has  influenced  digital  literacy  which  demands  user convenience  in  accessing  it.  Hadith  is  one  of  the  most  important  elements  in  Islam  which  consists  of  more  than  hundreds  of  thousands  of hadith  and  is  arranged in  sheets  that  are  stored  in  certain  places.  Imam  Bukhari  narrated  more  than  7000  hadiths. The number of  sheets  of hadith makes it difficult for users to search for a subject. Making a Web-based application of the Imam Bukhari hadith encyclopedia using the Knuth-Morris-Pratt  algorithm  as  a  solution  to  quickly  search  for  discussions  in  the  hadith.  This  application  is  made  using  the  codeigniter framework  to  load  web  pages.  The  design  of  this  Hadith  encyclopedia  application  system  uses  UML  (Unified  Modeling  Language).  The system  successfully performs  a  data  search  using  the  Knuth-Morris-Pratt  algorithm.  From  10  search  attempts,  the  average  time  was  2.7457 seconds and all keywords were found.

## I. P ENDAHULUAN
Perkembangan  teknologi  digital  telah  mendorong  lahirnya inovasi-inovasi  user-friendly  yang  memudahkan  pengguna untuk  mendapat  informasi  yang  dibutuhkan  dengan  nyaman. Literasi  digital  salah  satu  dari  inovasi  tersebut  dan  menjadi budaya  baru  dalam  mendapatkan  sejumlah  informasi  yang dibutuhkan dengan cepat.
Dalam  ajaran  Islam,  Hadist  menepati  urutan  kedua  setelah Al-Qur`an  sebagai  sumber  hukum  islam.  Hadits  berfungsi sebagai rician dan penguatan apa yang diterangkan dalam Al- Qur`an.  Imam  Bukhari  salah  satu  dari  perawi  Hadist  yang terkenal dan kumpulan hadist-hadistnya disusun kembali oleh Ibnu  Hajar  Al-Asqalani  dalam  kitab  Fath  Al-Bari  bi  Syarh Shahih Al-Bukhari. Kitab ini terdiri dari 36 jilid dan menjadi rujukan kaum muslimin baik santri maupun masyarakat biasa. Banyaknya  jilid  kitab  tersebut  akan  membutuhkan  ruang  dan tenaga untuk menempatkan dan membawa kitab-kitab tersebut. Pencarian  suatu  pembahasan  yang  ada  dalam  kitab  Fath  Al- Bari  bi  Syarh  Shahih  Al-Bukhari  juga  akan  membutuhkan waktu yang relatif lama  jika dilakukan  secara manual dengan membolak-balik lembar perlembar.
Pencarian  suatu  pembahasan/dokumen  secara  digital membutuhkan  tambahan  peralatan  yang  dapat  membantu proces  pencarian.  Peralatan  tambahan  itu  berupa  algoritma pencarian  string.  Algoritma  pencarian  string  yang  sering digunakan  antara  lain:  Algoritma Brute  Force,  Boyer  Moore, Aho-Corasick dan Algoritma Knuth Morris Pratt.
Algoritma Knuth  Morris  Pratt adalah  suatu  algoritma pencarian  string  untuk  mencari  teks  berdasarkan  urutan  yang dimulai  dari  kiri  ke  kanan.  Algoritma  ini  bekerja  dengan menyesuaikan pattern atau urutan kata yang akan dicari.
Algoritma Knuth  Morris  Pratt dikembangkan  secara terpisah oleh James H. Morris bersama Vaughan R. Pratt pada tahun  1966,  dan  oleh  Donald  E.  Knuth  pada  tahun  1967. Publikasi dilakukan secara bersama-sama pertama sekali oleh keduanya  pada  tahun  1977.  Algoritma  ini  merupakan pengembangan dari algoritma Brute Force. Sara  Basee  menggambarkan  dalam  bukunya    ” Computer Alogrithm  Third  Edition:  Solution  to  Selected  Exercise ”, menjelaskan  Algoritma Knuth  Morris  Pratt bekerja  dengan cara  menghitung  fungsi  pinggiran  dari  pola  dan  kemudian dibandingkan antara pola dengan elemen pertama dari kalimat tersebut,  jika  tidak  sesuai  akan  dilakukan  perbandingan  pada elemen berikutya [1].
Aplikasi  Ensiklopedia  Hadits  Imam  Bukhari  dibangun berbasis  web  supaya  pengguna  dapat  menggunakan  dimana saja  dan  memudahkan    pengguna  dalam  mengakses  materi- materi  yang  terkandung  dalam  kitab  tersebut.  Web  ini dibangun  menggunakan  bahasa  pemograman  PHP  dan database  MySQL  untuk  menampung  materi-materi  Hadits yang  digunakan.  Setiap  materi  dapat  dicetak  sehingga memudahkan pengguna untuk mendapat hasil berupa cetakan. Untuk  memperindah  tampilan,  aplikasi  ini  juga  dilengkapi dengan gambar
Penggunaan  algoritma Knuth  Morris  Pratt dalam  aplikasi ini  sebagai  pencarian  materi pembahasan  seperti  pembahasan tentang:  Shalat,  Iman,  Ilmu,  Wudhu,  Mandi,  dll.  Pencarian
string  ini  akan  memberikan  kemudahan  pengguna  untuk segera mendapatkan materi yang dibutuhkan.

## II. M ETODOLOGI P ENELITIAN
Dalam  membangun  aplikasi  ini  lakukan  beberapa  tahapan antara  lain:  pengumpulan  data,    perancangan  sistem, pembuatan sistem dan pengujian sistem.
A. Pengumpulan Data Untuk  mendapatkan  data-data  yang  bersifat  teoritis, dilakukan pengumpulan data hadits yang ada pada kitab  Fath Al-Bari  bi  Syarh  Shahih  Al-Bukhari,  selain  itu  juga mempelajari  artikel  dan  jurnal  dari  internet.  Adapun  teknik pengumpulan  data  menggunakan  teknik  studi  literature  yaitu mempelajari  literature  yang  berkaitan  dengan  Ensiklopedia, web dan Algoritma Knuth Morris Pratt .
B. Metode Knuth-Morris-Pratt (KMP) Algoritma  Knuth  Morris  Pratt  merupakan  jenis Exact String Matching  Algorithm dimana  merupakan  pencocokan string secara tepat dengan susunan karakter dalam string yang dicocokan  memiliki  jumlah  maupun  urutan  karakter  dalam string yang  sama.  Dengan  kata  lain  metode  ini  mencari kehadiran  sebuah  kata  dalam  teks  dengan  melakukan observasi  awal  ( preprocessing )  dengan  cara  mengecek  ulang kata  sebelumnya.  Algoritma  ini  melakukan  pencocokan  dari kiri ke kanan.
Algoritma Knuth  Morris  Pratt digunakan  untuk  bekerja pada  arsitektur  yang  mendukung string paralel  ukuran  yang lebih besar [2].
Flowchart Algoritma Knuth-Morris-Pratt adalah sebagai berikut:
Gambar 1. Flowchart Algoritma Knuth-Morris-Pratt
Secara  sistematis  langkah-langkah  yang  dilakukan algoritma Knuth  Morris  Pra tt  pada  saat  mencocokkan string adalah:
1. Algoritma Knuth-Morris-Pr att  mulai  mencocokan pattern pada awal teks .
2. Dari  kiri  ke  kanan,  algoritma  ini  akan  mencocokkan karakter  per  karakter pattern ,  dengan karakter di teks yang  bersesuaian  sampai  salah  satu  kondisi  berikut terpenuhi:
a. Karakter  di pattern dan teks yang  dibandingkan tidak cocok (mismatch).
b. Semua  Karakter  di pattern cocok  kemudian algoritma akan memberitahukan penemuan diposisi ini.
3. Algoritma  kemudian  menggeser pattern berdasarkan tabel text ,  lalu  menghitung  langkah  2  sampai pattern berada di ujung teks.[3]
Pencocokan  karakter  dari  kiri  ke  kanan  mencari prefix terpanjang  dari  P[O..j-1]  yang  juga  merupakan suffix dari  P [1..j-1). untuk menghindari pergeseran yang tidak perlu. Hasil dari  pencarian prefix terpanjang  disimpan  dalam  tabel preKMP.  Tabel  preKMP  ini  dinyatakan  dalam array ,  yaitu preKMP[j].  Karakter-karakter  yang  tersimpan  dalam  tabel KMP  dapat  dimanfaatkan  sehingga  dapat  memungkinkan pergeseran lebih jauh.[4]

## C. Perhitungan Metode Knuth-Morris-Pratt
Contoh perhitungan KMP, dimana dengan memberikan sejumlah karakter sebagai text = “SHALAT” dan yang akan dicocokkan adalah pattern “ALAT”.
S H A L A T A L A T
Dari  data  diatas  maka  dilakukan  langkah-langkahnya  sebagai berikut:
1. Langkah  pertama  bandingkan pattern [1  A]dengan
text [1 S]
S H A L A T A L A T
Jika pattern [1  A]  tidak  cocok  dengan text [1  S], maka pattern [1 A] akan digeser kekanan sebanyak 1 kali.
2. Langkah  kedua  yaitu  bandingkan pattern [1  A]
dengan text [2 H] S H A L A T A L A T
Jika pattern [1  A]  tidak  cocok  dengan text [2  H], maka pattern [2  A]  akan  digeser  ke  kanan  sebanyak 1 kali.
3. Langkah  ketiga  yaitu  bandingkan pattern [1  A]
dengan text [3 A] S H A L A T A L A T Jika pattern [1  A]  cocok  dengan text [3  A]  maka tidak  akan  terjadi  pergeseran pattern ,  namun selanjutnya akan mulai membandingkan pattern [2 L] dan text [4 L]
4. Langkah  keempat  yaitu  bandingkan pattern [2  L] dengan text [4 L]
S H A L A T A L A T
Jika pattern [2 L] cocok dengan text [4 L] maka tidak akan terjadi pergeseran pattern , kemudian
selanjutnya akan mulai membandingkan pattern [3 A] dan text [5 A]
5. Langkah  kelima  yaitu  bandingkan pattern [3  A] dengan text [5 A] S H A L A T
A L A T Jika pattern [3  A]  cocok  dengan text [5  A]  maka tidak  akan  terjadi  pergeseran pattern ,  selanjutnya akan mulai membandingkan pattern [4 T] dan text [6 T]
6. Langkah keenam yaitu bandingkan text [6 T] dengan pattern [4 T] S H A L A T
A L A T
Jika pattern [6 T] cocok dengan text [4 T] maka tidak akan  terjadi  pergeseran pattern ,  Karena  seluruh pattern yang  cocok  dengan text telah  terpenuhi meskipun text belum  habis  maka  proses  pencarian berakhir.
Algoritma Knuth-Morris  Pratt melakukan  pencocokan karakter  dari  kiri  kekanan  dengan  menyingkat  jumlah perbandingan  dengan  cara  menghitung  dengan  dimulai  dari ketidakcocokan ditemukan, dari ketidakcocokan tersebut akan dihitung dari mana pencarian selanjutnya dimulai.[4]

## D. Perancangan Sistem
Perancangan  sistem  untuk  aplikasi  ensiklopedia  Hadis  ini dimana  user  dapat  mengakses  segala  informasi  Kitab  Hadis, bab hadis, nomor Hadis, Hadis dan terjemahan menggunakan web  browser.  Perancangan  sistem  menggunakan Unified Modelling  Languange (UML).  Perancangan  UML  untuk Aplikasi  Ensiklopedia  Hadis  ini  terdiri  dari  perancangan  use case dan activity diagram.
▪ Use Case Diagram
Use case diagram utama web aplikasi Ensiklopedia Hadits ditunjukkan pada gambar 2.
▪ Activity Diagram cari hadis
Untuk activity  diagram aplikasi  ensiklopedia  hadis, ditunjukkan pada gambar 3.
Gambar 3. Activity Diagram Cari Hadis Diagram  diatas  menggambarkan  aktivitas  yang  dilakukan oleh  user  terhadap  sistem  ini  untuk  dapat  melakukan pencarian  Hadis.  User  memilih  halaman  cari  hadis  lalu menginputkan  kata  kunci  hadis  yang  ingin  dicari  selanjutnya user  meklik  tombol  cari.  Kemudian  data  hadis  yang  telah dicari  di  dalam  database  akan  ditampilkan  kembali  didalam halaman cari hadis.
▪ Activity Diagram login admin
Gambar 4. Activity Diagram Proses Login Admin
E. Perancangan User interface
Pada  bagian  ini  dilakukan  perancangan  bentuk  tampilan halaman  web  aplikasi  Ensiklopedia  Hadits  yang  dapat memudahkan user dalam menggunakan sistem yang dibangun.
Gambar 5. Perancangan Tampilan Home
Gambar  5  menujukkan  bentuk  halaman  awal  ketika aplikasi  ini  dibuka.  Pada  halaman  tersebut  juga  terdapat bahagian pencarian sehingga pengguna dapat segera mendapat materi  pembahasan  yang  sesuai  dengan  cara  memasukkan kata di bahagian tersebut.

## III. H ASIL DAN P EMBAHASAN
Pada  bahagian  hasil  dan  pembahasan,  menjelaskan  hasil implementasi aplikasi Ensiklopedia Hadits yang terbagi dalam hasil  bahagian  pengujian user  interface dan  implementasi algoritma Knuth Morris Pratt.
A. Pengujian user interface
Hasil  tampilan  user  interface  terdiri  dari  tampilan  form menu  kitab,,  tampilan  form  menu  hadis,  tamilan  form  menu cari  hadis,  tampilan  form  menu  lihat  hadis,  tampilan  form menu  profil,  tampilan  form  halaman  about,  tampilan  form menu help ,  tampilan form menu login ,  tampilan form tambah hadis  dan  tampilan form tambah  kitab.  Gambar  6 menunjukkan tampilan halaman utama untuk pengguna.
Gambar 6 tampilan halaman utama untuk pengguna
Menu  ini  terdiri  dari  beberapa  menu  yaitu  menu  home, menu  kitab,  menu  hadis,  menu  cari  hadis,  dan  menu  login. Untuk membangunnya digunakan script program  ditunjukkan pada gambar 7.
B. Pengujian inputan data
C. Edit data
D. Algoritma Knuth Morris Pratt
Hasil form lihat  hadis  ditunjukkan  pada  gambar  8  dan script programnya ditunjukkan pada gambar 9.
Gambar 8. Tampilan Form Lihat Hadis
Gambar 9. Script Form Lihat Hadis
Untuk  hasil  tampilan  form  kitab  ditunjukkan  pada  gambar 10 dan script programnya ditunjukkan pada gambar 11.
Gambar 10. Tampilan form kitab
Gambar 11. Script Form kitab Pada  gambar  10  menunjukkan  tampilan  menu  Kitab  yang menampilkan  daftar  kitab  yang  tersedia  dalam  web  Hadis. Jika salah satu kitab dipilih maka pengguna akan dialihkan ke menu  hadis  dengan  tampilan  hadis-hadis  yang  berasal  dari kitab  yang  dipilih.  Jika  hak  akses admin dimiliki,  maka  akan tampil  tanda  [X]  disebelah  nama  kitab  dimana  tanda  ini berfungsi untuk menghapus kitab dari database.
Tampilan form  login akan  tampil  jika  menu  login  hadis dipilih.  Form  login  digunakan  untuk  memberikan  hak  akses untuk membuka menu admin kepada pengguna yang memiliki username dan password .  Gambar  12  menunjukkan  tampilan form login dan gambar 13 menunjukkan script form login .
<div id="navbar"> <ul class="nav navbar-nav"> <li><a href="<?php echo base_url(); ?>">Home</a></li>
<li><a href="<?php echo base_url(); ?>kitabs">Kitab</a> <li><a href="<?php echo base_url(); ?>hadits">Hadis</a> <li><a href="<?php echo base_url(); ?>hadits/kmp">Cari Hadis</a>
$this->db->order_by('id'); $query = $this->db->get('kitabs'); return $query->result_array()
data['hadis'] = $this->hadis_model->get_posts($lihat); $hadis_id = $data['hadis']['id'];
$data['comments'] =$this->comment_model- >get_comments($hadis_id); if(empty($data['hadis'])){ show_404(); } $data['bab'] = $data['hadis']['bab'];
Gambar 12. Tampilan form login
Gambar 13. Scirpt tampilan form Login
Untuk  tampilan form  about akan  tampil  pada  saat  menu about  dipilih.  Gambar  14  menunjukkan form  about dan gambar 15 menunjukkan script form about.
Gambar 14. Tampilan form about
Gambar 15. Tampilan Script about
B. Pengujian user interface Pengujian  algoritma  Knuth  Morris  Pratt  dilakukan  untuk melihat  tingkat  keberhasilan  implementasi  algoritma  ini terhadap  sistem  aplikasi  ensiklopedia  hadis.  Pengujian  ini dilakukan untuk melihat keberhasilan dari pencocokan pattern terhadap text pada data hadis berdasarkan bab, isi, dan perawi dari data hadis yang telah disimpan di database. Algoritma ini bekerja  dengan  cara  membandingkan  string  terhadap  pattern dengan  cara  menggeser  string  kekanan  sampai  didapat kecocokan dan hasil pencarian didapat.
Dalam  melakukan  pengujian  ini  user  memasukkan  kata kunci  yang  ingin  dicari  pada  form  cari  hadis,  seperti ditunjukkan pada gambar 16.
Gambar 16 Tampilan inputan kata kunci
Kata  kunci  yang  diisi  pada  gambar  16  adalah  wahyu, dimana  sistem  akan  melakukan  pencocokan  string  dengan data  yang  ada  di  database.  Gambar  17  menunjukkan script yang digunakan algoritma Knuth Morris Pratt.
Gambar 17. Tampilan Script algoritma Knuth Morris Pratt
Ketika pencocokan kata wahyu sesuai atau ada dengan data di  database,  sistem  akan  menampilkan  hasilnya  seperti ditunjukkan pada gambar 18.
Gambar 18. Tampilan hasil algoritma Knuth Morris Pratt
while($j<count($text)){ if(isset($pattern[$i]) && isset($lompat[$i])){ while($i>-1 && $pattern[$i]!=$text[$j]){ $i = $lompat[$i];
} }else{ $i = 0; } $i++; $j++; if($i>=count($pattern)){ $hasil[$num++]=$j-count($pattern); if(isset($lompat[$i])){ $i = $lompat[$i]; } } } return $hasil; }
$this->db->where('username', $username); $this->db->where('password', $password); $result = $this->db->get('users');
<div class="tab-pane fade" id="about"> <h3>Tentang Ensiklopedia Hadis</h3> <h3>Sumber Hadis Bukhari</h3> <h4>- Hadis Bukhari Bersumber dari kitab "Fathul Bari" Syarah Shahih Bukhari karangan AL-HAFIZH IBNU HAJAR AL-ASQALANI</h4> <hr> <h4>BIOGRAFI AL-HAFIZH IBNU HAJAR AL- ASQALANI</h4>
Dari  hasil  diatas  menunjukkan  algoritma Knuth  Morris Pratt berhasil di implementasikan. Tabel 1 menunjukkan hasil pengujian yang dilakukan untuk 10 kata kunci dengan selang waktu yang dibutuhkan dalam pencocokan data dengan data di database.
Tabel 1. Hasil Pencarian algoritma Knuth-Morris-Pratt
No Kata Keterangan Waktu Eksekusi Algoritma (detik) 1 shalat berhasil 2.8094 2 wudhu berhasil 2.7134 3 hadits berhasil 2.6865 4 haji berhasil 2.7207 5 puasa berhasil 2.8997 6 Muhammad berhasil 2.7707 7 niat berhasil 2.6437 8 nafkah berhasil 2.6787 9 taubat berhasil 2.7402 10 dusta berhasil 2.7937 Rata-rata Waktu Eksekusi (detik) 2.7457

## IV. K ESIMPULAN
Berdasar  hasil  pengujian  yang  telah  dilakukan  dapat disimpulkan:
1. User  interface bekerja  dengan  baik  pada  aplikasi Ensiklopedia Hadits Imam Bukhari berbasis web.
2. Sistem berhasil melakukan pencarian data menggunakan algoritma Knuth Morris Pratt .
3. Waktu  pencarian  rata-rata  yang  dibutuhkan  dalam  10 kali  percobaan  sebesar  2.7457  detik,  dengan  kategori semua kata berhasil dicocokkan/didapat.
R EFERENSI
[1] Basee,  S.  (2000). Computer  Algorithms  :  Introduction  To Design And Analysis.
[2] Tus Sa’diah,  Halimah. 2017. Implementasi Algoritma Knuth-Morris- Pratt  Pada  Fungsi  Pencarian  Judul  Tugas  Akhir  Repository.  Jurnal Komputasi,  Vol.14,  No.1,  January  2017,  pp.  115~124  ISSN:  1693- 7554
[3] Alwin  Fau,  Mesran.,  &LG  Guidio.  2017.  Implementasi  Algoritma Pencocokan  String  Knuth-Morris-Pratt  Dalam  Aplikasi  Pencarian Dokumen Digital Berbasis Android. Jurnal Rekursif, Volume VI No 1, Juni 2017, ISSN : 2337 – 3601
[4] Putu Agus Doni Setiawan, Implementasi Algoritma Knuth Morris Pratt PadaPencarian Koleksi Masakan Khas Bali Berbasis Android.
[5] Geraldy,  Ditya,  2016,  Studi  Perbandingan  Algoritma  Brute  Force, Algoritma  Knuth  Morris-Pratt,  Algoritma  Boyer-Moore  untuk Identifikasi  Kesalahan  Penulisan  Teks  berbasis  Android.  Salatiga. Universitas Satya Wacana,
[6] Prehanto, Dedi Rahman., Setiawan, Henry. 2015. Analisa Perbandingan  Boyer Moore  Dan  Knuth  Morris  Pratt  Dalam  Pencarian Judul  Buku  Menerapkan  Metode  Perbandingan  Eksponensial(Studi Kasus : Perpustakaan STMIK Budi Darma). Volume 04 Nomor 01, 51 -60
[7] Ditya  Geraldy,  2016.Studi  Perbandingan  Algoritma  Brute  Force, Algoritma KnuthMorris-Pratt, Algoritma Boyer-Moore untuk Identifikasi Kesalahan Penulisan Teks berbasis Android, Hal 3.
[8] Kandiya ,  Tiya. 2017.  Sistem Informasi  Tanaman  Obat Menggunakan Metode  Levenshtein  Distance.  Lhokseumawe.  Politeknik  Negeri Lhokseumawe.
[9] Rossaria,  Maya.,  Susilo  Boko.,  &  Ernawati.  2015.  Implementasi Algoritma  Pencocokan  String  Knuth-Morris-Pratt  Dalam  Aplikasi Pencarian Dokumen Digital Berbasis Android. Jurnal Rekursif, Vol. 3
No.2, ISSN 2303-0755
[10] Rasjid,  Fadjar  Efendy.  2014.  Bahasa  Pemrograman  Populer PHP.[Online]. Tersedia: http://www.ubaya.ac.id/2014/content/ articles_detail/144/Bahasa-Pemrograman-populer-PHP.html  (16  April 2019).