• int preg_match_all str pola , str subjek , array matches [, int order ]; • mixed preg_replace mixed pola , mixed pengganti , mixed subjek [, int limit ]; • array preg_split str pola , str subjek [, int limit [, int flags ]]; • string preg_quote str s [, str kutip ]; • array preg_grep str pola , array input ; Show
2.1.1 PenulisanPola regex ditulis sebagai string dan diletakkan diantara tanda pengapit atau tanda pengapit yang dapat kita definisikan sendiri. Sedangkan modifier dituliskan setelah tanda pengapit terakhir .2.1.2 Fungsi preg_matchFungsi preg_match pada PHP sama dengan fungsi m yang terdapat pada Perl. Namun tanpa dikenakan modifier g pada akhir pola. Contoh : 10 .latihan_ 01 . php ?php text = Pagi ini saya sarapan Soto. ; preg_match soto|siomay|satei , text , matches ; echo Hai.. Pagi ini kamu sarapan . matches [ ]; ? Program tersebut diatas dapat dijelaskan sebagai berikut : • Program melalui fungsi preg_match akan mencocokkan string pola soto| siomay|sate dan modifier i case insensitive dengan karakter yang terdapat 10 pada variabel text . • Jika terdapat item yang cocok dengan pola regex, item-item tersebut akan disimpan pada variabel matches dalam bentuk array. • Program selanjutnya menampilkan 10 .latihan_ 2 . php ?php text = http:amikom.ac.id ; if preg_match http:\\i , text { echo URL valid. ; } else { echo URL tidak valid. ; } ? Contoh latihan program tersebut diatas digunakan untuk melakukan pengecekan terhadap format URL yang terdapat pada variabel text . Jika URL yang terdapat pada variabel text bernilai valid, maka fungsi preg_match akan mengembalikan nilai true , dan false jika sebaliknya. Sekarang, cobalah mengganti format fungsi preg_match http:\\i , text diatas menjadi preg_match http:i , text , kemudian amati dan analisa hasilnya. Adakah perbedaan?2.1.3 Fungsi preg_match_allPHP tidak mendukung modifier g seperti halnya fungsi regex pada Perl. Namun PHP menyediakan fungsi preg_match_all sebagai pengganti dari modifier ini. Fungsi ini biasa digunakan jika kita menginginkan pengambilan seluruh kelompok item yang cocok dengan pola dalam satu text secara sekaligus. Perhatikan contoh program berikut : 11 10 .latihan_ 3 . php ?php teks = Dari awal saya bilang juga ndak apa-apa . mo Perl kek, PHP kek, Java kek . bahasa-bahasa laen kek, semua oke ; n = ; preg_match_all \w+-.+? , teks , matches , PREG_SET_ORDER ; echo Total = . count matches . kata ulang, yaitu :br ; for i = ; i count matches ; i ++ { echo matches [ i ][ 1 ]. br ; n ++ ; } ? Bandingkan program diatas dengan cara mengganti fungsi preg_match_all dengan fungsi preg_match , kemudian amati dan lihat hasilnya.2.1.4 Fungsi preg_replaceRegular Expression atau biasa disingkat regex, adalah suatu metode untuk mengenali atau mendeteksi suatu pola tertentu pada suatu string. Dengan menggunakan regex, kita bisa mendeteksi pola string seperti email, hashtag, link dan pola-pola kompleks lainnya dengan hanya satu ekpresi saja. Ia juga merupakan metode standar dan independen, tidak mengenal bahasa pemrograman. Kita bisa mengimplementasi regex di berbagai macam bahasa pemrograman: termasuk PHP. Kapan Harus Menggunakan Regular Expression?Jika anda hanya butuh mendeteksi suatu kata statis dalam suatu string, jangan gunakan regex! Tapi jika anda butuh untuk mendeteksi suatu pola yang dinamis dalam suatu string, maka anda tidak punya pilihan yang lebih baik dari pada regex. Misalkan anda memiliki teks seperti ini:
Lalu anda ingin mencetak tebal semua karakter yang diapit dengan tanda bintang ( 0), sehingga teks di atas berubah menjadi seperti ini:
Maka cara terbaik untuk melakukan hal tersebut adalah: memanfaatkan regex. Beberapa Fungsi Regular Expression Pada PHPDi dalam PHP, terdapat beberapa fungsi yang berkaitan dengan penggunaan regex. Di antaranya: FungsiDeskripsi 1Mencari kata/karakter yang sesuai dengan pola regex. 2Mencari semua kata/karakter yang sesuai dengan pola regex. 3Mencari kata/karakter yang sesuai dengan pola regex, lalu menimpanya dengan data baru. 4Mengembalikan kata/karakter yang sesuai dengan pola regex. 5Membagi string menjadi sebuah array menggunakan pola regex.Table 1: fungsi-fungsi bawaan PHP untuk bekerja dengan regex Beberapa Meta Karakter RegexTerdapat banyak sekali meta karakter atau pola dalam regex. Akan tetapi, di bawah ini adalah yang mungkin paling sering anda gunakan. KarakterDeskripsi 6karakter putih (spasi, tab, baris baru) 7angka digit (0-9) 8karkater huruf (a-z, A-Z, 0-9, _) 9pola yang terdiri dari set karakter di dalam kurung siku 0pola yang tidak terdiri dari set karakter di dalam kurung siku`(foobarTable 2: beberapa meta karakter regex yang sering digunakan Agar lebih mudah memahami regex, kita akan coba langsung mempraktikkannya. Kasus yang akan kita buat adalah:
Langsung saja buka teks editor kalian, lalu buat 4 buah file sebagai berikut:
Pada file 1, require semua file yang berada pada direktori 2.
Oke, setelah itu kita akan mulai dari setiap kasus. 1. Deteksi #hashtagKasus yang pertama adalah mendeteksi setiap kata yang diawali tanda pagar alias hashtag. Setelah berhasil mendeteksi, kita akan mereplace setiap hashtag menjadi link ke twitter.com. Untuk mendeteksi pola hashtag, kita akan gunakan fungsi 2 yang akan mengembalikan semua teks yang sesuai dengan pola.Buka file 1. Lalu tambahkan kode berikut:
Pada file 5, buat fungsi 6. Lalu kita coba untuk mendeteksi semua tanda 7 yang ada (sementara tanda pagarnya saja dulu)
Jika skrip 1 dijalankan, ia akan menghasilkan output sebagai berikut:
Penjelasan:
Oke, sekarang kita akan kembangkan polanya menjadi sedikit lebih rumit. Kita akan memanfaatkan tanda kurung siku untuk menentukan set karakter pola untuk mendeteksi hashtag. Silakan lihat kembali ke tabel 2 untuk melihat deskripsi meta karakter yang ada. Pada file 1, ubah variabel 2 menjadi seperti ini:
Lalu jalankan lagi file 1, kita akan mendapatkan output seperti berikut:
Penjelasan:
Pertanyaan: lalu bagaimana untuk mendeteksi semua karakter dalam satu kata yang ada? Jawabannya adalah: dengan menambahkan tanda 7 setelah kurung siku!Ubah variabel 2 menjadi seperti ini:
Lalu jalankan lagi aplikasi, dan sekarang kita berhasil mendapatkan output yang kita inginkan:
Agar kita bisa mendeteksi hashtag yang juga berisi angka, huruf kapital serta underscore. Kita harus mengubah variabel 2 seperti berikut:
Oiya, satu lagi. Kita ingin hanya mendapatkan kata virus saja bukan #virus, begitu juga kata korona saja bukan #korona. Maka kita bisa memberikan tanda kurung untuk memisahkan satu elemen tertentu dari suatu pola regex. Ubah variabel 2 menjadi seperti berikut: 0Jika kita eksekusi, kita akan mendapatkan output seperti berikut: 1Anda bisa perhatikan dari output di atas bahwa kita memiliki array dengan 2 item, di mana item pertama berisi pola secara lengkap. Dan item ke-2 berisi pola yang diapit oleh tanda kurung saja (tanpa tanda pagar). Langkah selanjutnya, kita akan menggunakan fungsi 3 untuk menimpa semua hashtag dengan sebuah link yang mengarah ke twitter.Ubah fungsi 6 menjadi seperti berikut: 2Perhatikan baris yang saya highlight di atas:
Jika program saya eksekusi kembali, saya mendapatkan output seperti berikut:
2. Deteksi @usernameSetelah mencoba langkah-langkah yang cukup detil pada contoh kasus pertama, saya rasa untuk kasus kedua tidak terlalu susah. Karena kita hanya perlu mengganti tanda 7 di atas menjadi tanda 7. Lalu mengganti url twitter menjadi 8.Langsung saja. Buka file 9. Lalu tambahkan fungsi bernama 0 sebagaimana berikut: 3Lalu pada file 1, kita bisa menambahkan teks baru seperti berikut: 4Ketika saya eksekusi, ini adalah output yang saya dapatkan:
3. Deteksi EmailUntuk mendeteksi email, kita bisa melakukannya dengan 3 pola bagian:
Sehingga ketika 3 pola di atas kita rangkai, kita mendapatkan pola sebagai berikut: 5Langsung saja. Silakan buka file 6 lalu buat fungsi 7 sebagai berikut: 6Lalu pada file 1, kita bisa tambahkan teks baru sebagai berikut: 7Maka setelah dijalankan, output yang kita dapatkan adalah sebagai berikut:
4. Deteksi Kode Spesial WhatsappKita telah mencoba 3 contoh kasus. Ketiga contoh tersebut terbilang sederhana karena ketiganya hanya menerapkan satu pola dan satu timpaan. Sedangkan pada kasus ini, kita akan mencoba 3 pola sekaligus dalam satu kali pemanggilan fungsi 9.Selain menerima parameter string, fungsi 9 juga bisa menerima parameter berupa array yang berisi kumpulan lebih dari satu pola.3 pola yang akan kita buat adalah sebagai berikut:
Langsung saja. Buka file 4 dan buat fungsi dengan nama 5 lalu tuliskan kode program seperti berikut: 8Penjelasan:
Setelah beres dengan fungsi 5. Sekarang kita ubah file 1, tambahkan kode program berikut: 9
Kode Sumber LengkapKode sumber lengkap untuk tutorial ini dan seri tutorial PHP tingkat menengah lainnya bisa anda dapatkan di repositori github di sini. KesimpulanRegex adalah suatu metode/pendekatan untuk mendeteksi suatu pola dari suatu string. Dengan memanfaatkan regex, kita bisa memeriksa berbagai macam pola teks yang rumit hanya dalam satu ekspresi saja. Di dalama tutorial ini, kita telah mencoba 4 contoh kasus untuk memahami lebih jauh bagaimana cara bekerja dengan regex pada PHP. |