PHP Web Parser

Script ini merupakan sebuah class yang saya buat secara ngawur yang pada awalnya digunakan untuk mengambil konten suatu web pemerintahan yang isinya kemudian di-post ke dalam web lain via xmlrpc, gara-gara parser yang biasanya dipakai sedang mengalami "kemabukan heavy voodoo". Entah itu yang mabok si squeeze atau java, yang jelas program aslinya jadi ndak jalan.

Strukturnya dibagi menjadi 2 bagian besar yaitu:

  1. Halaman Index
  2. Halaman Konten

Halaman Index merupakan halaman yang memuat judul-judul berita, yang bentuk umumnya kira-kira seperti ini:

Sebuah Pesawat Jatuh Di Kasur
Telah dilaporkan bahwa sebuah pesawat yang mengangkut nyamuk yang sedang terbang melintasi kamar terjatuh ke kasur karena diceblek oleh ...

Seekor Kodok Tewas Mengenaskan
Waru, 9 Februari 2020, seekor kodok ditemukan tewas mengenaskan setelah tertimpa puing-puing reruntuhan mesin cuci rusak. Tampaknya mesin cuci tersebut sudah sekian lama tak dipakai sehingga tumbuh karat-karat yang...

Halaman Konten sendiri—seperti namanya—merupakan halaman yang memuat konten berita utuh. Bentuk kasarnya kira-kira begini:

Sebuah Pesawat Jatuh Di Kasur

Telah dilaporkan bahwa sebuah pesawat yang mengangkut nyamuk yang sedang terbang melintasi kamar terjatuh ke kasur karena diceblek oleh penebah ketika yang punya kamar sedang bersih-bersih seprei.

Alhasil, kerusakan paling parah tampak pada bagian tengah pesawat yang tersobek tercabik-cabik sehingga pesawat langsung nyungsep jatuh ke kasur.

Belum ada perkiraan kerugian terhadap peristiwa ini, namun dipastikan bahwa tidak ada korban jiwa yang jatuh.

Seekor Kodok Tewas Mengenaskan

Waru, 9 Februari 2020, seekor kodok ditemukan tewas mengenaskan setelah tertimpa puing-puing reruntuhan mesin cuci rusak. Tampaknya mesin cuci tersebut sudah sekian lama tak dipakai sehingga tumbuh karat-karat yang merusak bodi mesin cuci.

Saat dikonfirmasi, pemilik mesin cuci membenarkan bahwa atas kelalaiannya, mesin cuci tersebut menjadi rusak dan memakan korban. Keluarga tuan kodok hingga saat ini masih menangis histeris melihat kematian kodok tersebut, dan berencana untuk menggugat pemilik mesin cuci ke pengadilan di mana tuan kambing akan menjadi hakim perkara ini.

Script ini sangat bergantung pada regex. Pola ini digunakan untuk menentukan daftar link pada halaman index, judul pada halaman konten, serta isi artikel pada halaman konten. Penentuan pola yang dipakai dilakukan menggunakan fungsi $obj->setRegex() yang menerima dua parameter yaitu "jenis" dan "regex yang dipakai". Parameter jenis itu sendiri dapat berisi 3 macam yaitu: index, judul, atau berita.

Contoh penggunaanya begini:

  1. require_once( "class-WebContentParser.php" );
  2.  
  3. $parser = new WebContentParser( "http://wp.entah.com" );
  4. $parser->setRegex( "index", "@<h1><a href=\"(.+?)\" rel=\"bookmark\">.*?</h1>@" );
  5. $parser->setRegex( "judul", "@<h1><a href=\".+?\" rel=\"bookmark\">(.+?)</a></h1>@" );
  6. $parser->setRegex( "berita", "@</p>.*?</div>[\s]*?<p>(.*?)<!--@ms" );
  7.  
  8. if( $parser->parse() ) {
  9.         $res = $parser->getResult();
  10. } else {
  11.         $parser->dumpError();
  12. }
  13.  
  14. print_r( $res );

Hasil parsing ada di dalam variabel $res, yang selanjutnya terserah anda mau diapakan. Parameter constructor lain dan kegunaan masing-masing parameter tersebut bisa dibaca langsung di source code. Kalau bingung silakan melakukan coba-coba trial n error, atau boleh juga kirim email ke saya, kali aja kita bisa diskusi sedikit tentang parser ini.

Mohon sabar, karena kode ini sudah pasti ndak bagus deh. Sejak pertama kali saya mrogram pada tahun 2000an, ini adalah class kedua yang telah buat. Ya, baru yang kedua. Saya tidak begitu suka mrogram, apalagi berurusan dengan bebauan OOP. Oleh sebab itu, sebenarnya saya benar-benar mengharapkan bantuan para programmer yang lain untuk membantu "membereskan" kode ngawur ini. Saya bukan programmer. Walau level saya ecek-ecek, saya lebih menikmati peran saya sebagai tukang jaringan :)

Download: di sini.

Menurut anda program ini kurang X? Y? Z? Anda bebas ngubah programnya sendiri kok. Kalau mau diskusi, ya ayo via email saja. Kenapa kok di halaman ini ndak bisa pasang komentar ini itu dan anu-anu? Saya males bikin. Kalo mau kontak, (lagi-lagi) ya email saja he..he..he..

[TWTR] [FB] [GPLUS]
Seharusnya situs ini kelihatan bagus kalo anda lihat menggunakan layar monitor. Jangan pernah mencoba membaca isinya pakai kuku atau barang-barang klenik lainnya.
kamas@its.ac.id