Berkenalan dan Memahami Regular Expression (Regex) di PHP

Selamat siang sobat PHP[mu] lama tak update artikel, dikarenakan kesibukan yang tiap hari gak ada habisnya, pagi sampai sore kerja di kantor, pulang kerja dari kantor langsung ngajar, abis ngajar langsung tidur, seperti itulah tiap harinya dari senin sampai jumat dan minggu, kecuali saptu yang lumayan enak, paginya sampai sore kuliah and pulang kuliah langsung malam mingguan. hahaaaa, yooo wes lah, malah curhatan jadinya. 😀

Regex merupakan singkatan dari Regular Expression, yaitu sebuah metode untuk mencari suatu pola dalam sebuah string. Dalam PHP, yang sering digunakan adalah PCRE atau “Perl Compatible Regular Expression”. Berikut ini adalah beberapa dasar teori Regex PHP yang bisa Anda gunakan.

1. Fungsi yang digunakan untuk Regex dalam php adalah preg_match($regex, $string), di mana $regex adalah pola yang akan dicari dan $string adalah variabel yang akan dicari apakah ada pola $regex di dalamnya. Contoh Regex paling sederhana untuk mencari apakah ada pola “fgh” dalam string “abcdefghijk” sebagai berikut.

<?php
$string = 'abcdefghijk';
if(preg_match("/fgh/", $string)) {
  echo 'String berisi pola fgh';
} else {
  echo 'Tidak ada pola fgh dalam string';
}
?>

2. Untuk mencari pola “berawalan suatu string”, maka regex yang digunakan adalah karakter caping “^”. Contohnya, apakah string berawalan “abc” maka regex-nya adalah sebagai berikut.

<?php
$string = 'abcdefghijk';
if(preg_match("/^abc/", $string)) {
  echo 'String berawalan abc';
} else {
  echo 'Tidak berawalan abc';
}
?>

3. Regex di atas akan mendeteksi secara case sensitive, sehingga tidak dapat mendeteksi huruf kapital seperti “ABC”. Untuk membuatnya menjadi case insensitive, bisa menggunakan regex “i” seperti berikut ini.

<?php
$string = 'abcdefghijk';
if(preg_match("/^ABC/i", $string)) {
  echo 'String berawalan abc';
} else {
  echo 'Tidak berawalan abc';
}
?>

4. Untuk mencari pola di akhir sebuah string, ada 2 cara. Cara pertama adalah menggunakan tanda dolar “$”. Namun cara ini memiliki sebuah celah kecil untuk timbul suatu bug dalam program Anda jika tidak digunakan secara benar. Sebab tanda dolar memasukkan endline “\n” ke dalam pola yang dicari, sehingga bila mencari pola “xyz” dalam string “abcxyz” dan “abcxyz\n” akan menghasilkan nilai yang sama-sama benar. Untuk tidak memasukkan endline dalam pola, Anda bisa menggunakan regex backslash z “\z”. Contoh penggunaannya sebagai berikut.

<?php
$string = 'abc123xyz';
if(preg_match("/xyz\z/i", $string)) {
  echo 'Pola berakhiran xyz ditemukan';
} else {
  echo 'Pola tidak ditemukan';
}
?>

5. Untuk pencarian pola yang mengandung karakter meta, perlu diberikan perlakuan tersendiri. Karakter meta adalah karakter yang digunakan sebagai penanda Regex. Seperti contoh sebelumnya, salah satu contoh karakter meta adalah “^” dan “$”. Selain itu, beberapa karakter lainnya adalah titik “.”, asterik “*”, plus “+”, tanda tanya “?”, seluruh jenis tanda kurung, dan backslash “\”. Karena merupakan karakter meta, karakter ini tidak akan dibaca sebagai pola, melainkan hanya sebuah tanda operasi. Untuk memasukkannya sebagai karakter yang dicari dalam pola, Anda harus menambahkan karakter backslash “\” sebelum karakter meta. Backslash disebut juga sebagai escape character. Sebagai contoh, jika mencari pola 3+5 dalam sebuah string, maka bisa ditulis sebagai berikut.

<?php
$string = '1+1=2';
if(preg_match("/^1\+1/i", $string)) {
  echo 'Pola 1+1 ditemukan';
}
else {
  echo 'Tidak ditemukan';
}
?>

6. Karakter meta tersebut berbeda-beda fungsinya. Karakter kurung siku “[]” adalah untuk mendeskripsikan apakah karakter yang ada dalam tanda kurung tersebut terdapat pada string. Sebagai contoh, untuk mencari apakah karakter a, b, c, d, e, dan f ada dalam string, maka regex-nya dapat ditulis dengan “[abcdef]”. Penulisan karakter atau angka yang berurutan juga dapat ditulis dengan penghubung dash “-“, sehingga menjadi “[a-f]”.

<?php
$string = 'abcefghijklmnopqrstuvwxyz0123456789';
preg_match_all("/[a-f]/", $string, $matches);
foreach($matches[0] as $value) {
  echo $value . '<br />';
}
?>

7. Dalam kasus ini, semua meta karakter selain tanda caping “^” jika diletakkan dalam tanda kurung hanya akan dianggap karakter biasa. Namun untuk tanda caping bila diletakkan di bagian depan, maka berarti yang dicari adalah pola selain karakter yang ada di dalamnya. Sebagai contoh, jika ingin mencari pola selain huruf “bgjk” dalam string, maka harus ditulis sebagai berikut.

<?php
$string = 'abcefghijklmnopqrs';
preg_match_all("/[^bgjk]/", $string, $matches);
foreach($matches[0] as $value) {
  echo $value . '<br />';
}
?>

8. Kumpulan karakter khusus juga bisa disederhanakan dengan escape character tertentu, antara lain “\d” untuk semua karakter numerik, sehingga berfungsi sama seperti “[0-9]”, “\D” untuk karakter non-numerik, “\s” untuk whitespace character, “\S” untuk non-whitespace character, “\w” untuk alpha-numeric character, “\W” untuk non-alphanumeric character.

<?php
$string = 'abcefghijklmnopqrs';
preg_match_all("/\D/", $string, $matches);
foreach($matches[0] as $value) {
  echo $value . '<br />';
}
?>
Dengan men

9. Dengan menggabungkan semua teori Regex, Anda bisa membuatnya untuk mencari pola yang kompleks seperti alamat email. Anda bisa membaca lebih lanjut tentang Regex di dokumentasi php http://php.net/manual/en/function.preg-match.php.

<?php
$email = 'robby.prihandaya@gmail.com';
if(preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $email)) {
  echo 'Email valid';
} else {
  echo 'Email tidak valid';
}
?>

Sumber artikel ini dari : http://blog.haqqi.net/2011/07/pengenalan-regex-php/, segaja saya copas disini agar teman-teman lain yang butuh atau yang nyasar khususnya, bisa baca juga. sampai jumpa lagi di artikel berikutnya, semoga di artikel berikutnya saya bisa tulis sendiri lagi tanpa copas, semoga bermanfaat,..heheeee

One Comment

Add a Comment

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *