Share

Regular Expression menyediakan fondasi untuk fungsi pencocokan pola dalam data string. Dengan menggunakan Regular Expression Anda dapat mencari string tertentu di dalam string lain, Anda dapat mengganti satu string dengan string lain dan Anda dapat membagi string menjadi banyak bagian. PHP menawarkan fungsi yang spesifik untuk dua rangkaian fungsi Regular Expression. Berikut ini dua jenis Regular Expression dalam PHP :

  1. POSIX Regular Expression
    Struktur Regular Expression POSIX tidak berbeda dengan ekspresi aritmatika yang khas. Berbagai elemen (operator) digabungkan untuk membentuk ekspresi yang lebih kompleks. Regular Expression yang paling sederhana adalah mencari karakter tunggal, seperti huruf “o”, dalam string “google”.
  2. PERL-Compatible Regular Expression
    Regular Expression Perl-Compatible mirip dengan POSIX. Namun PCRE umumnya lebih akurat dan cepat dibandingkan dengan POSIX.

Expression Pada POSIX

Expression Deskripsi
[:alnum:] karakter alphanumeric (A-Z a-z 0-9)
[:alpha:] karakter huruf (A-Z a-z)
[:space:] karakter kosong, seperti spasi
[:digit:] numeric (0-9)
[:lower:] huruf kecil (a-z)
[:upper:] huruf kapital (A-Z)
[:punct:] karakter selain baris baru

Expression Pada PCRE

Expression Deskripsi
\w karakter kata (A-Z a-z 0-9 _)
\W karakter selain kata
\s karakter kosong, seperti spasi
\S karakter selain karakter kosong
\d numeric (0-9)
\D karakter selain numerik
. karakter selain baris baru

Metacharacter

Dalam pembentukan pola regex, kita akan sering memerlukan karakter-karakter khusus yang dikenal sebagai metacharacter.

Karakter Deskripsi
^ awal subject
$ akhir subject
[ ] awal dan akhir kelas karakter
| alternatif atau or
( ) awal dan akhir subpola
\ karakter escape

Quantifier

Quantifier berfungsi untuk menerapkan pengulangan pola sesuai dengan yang kita inginkan.

Quantifier Deskripsi
* 0 atau lebih
+ 1 atau lebih
? 0 atau 1
{n} satu
{n,} sedikitnya n
{,m} paling banyak m
{n,m} sedikitnya n dan tidak lebih dari m

REGEX POSIX dalam fungsi PHP

Fungsi Deskripsi
ereg() Fungsi ereg() mencari string yang ditentukan oleh pola string, mengembalikan true jika pola ditemukan, dan false jika sebaliknya.
ereg_replace() Fungsi ereg_replace() mencari string yang ditentukan oleh pola dan mengganti pola jika ditemukan.
eregi() Fungsi eregi() mencari seluruh string yang ditentukan oleh pola, pencarian tidak case-sensitive.
eregi_replace() Fungsi eregi_replace() beroperasi persis seperti ereg_replace(), kecuali pencarian pola dalam string tidak case-sensitive.
split() Fungsi split () akan membagi sebuah string menjadi berbagai elemen, batasan masing-masing elemen berdasarkan pembentukan pola dalam string.
spliti() Fungsi spliti() beroperasi dengan cara yang sama seperti split(), kecuali bahwa itu bukan case-sensitive.
sql_regcase() Fungsi sql_regcase() dapat dianggap sebagai fungsi utilitas, mengubah setiap karakter dalam parameter masukan menjadi ekspresi kurung yang berisi dua karakter.

REGEX PCRE dalam fungsi PHP

Fungsi Deskripsi
preg_ match() Fungsi preg_match() mencari string dengan  pola, mengembalikan true jika ada pola, dan false jika sebaliknya.
preg_match_all() Fungsi preg_match_all() mencari kecocokan dengan semua pola dalam string.
preg_replace() Fungsi preg_replace() beroperasi seperti ereg_replace(), kecuali bahwa regular expression dapat digunakan dalam pola dan pengganti parameter masukan.
preg_split() Fungsi preg_split() beroperasi persis sama seperti split(), kecuali regular expression menerima parameter masukan untuk pola.
preg_grep() Fungsi preg_grep() mencari semua elemen input array, mengembalikan semua elemen yang sesuai dengan pola regex.
preg_quote() Karakter ekspresi reguler biasa

Di bawah ini beberapa contoh menggunakan fungsi regex PHP di atas :


$string = "Anak Bali Cinta Damai!";

if (preg_match("/\bBali\b/i", $string, $match)) :
    print "Kata ditemukan!";
endif;

echo "<br />";

$split = split(" ", $string);

print $split[0] . " <br />";
print $split[1] . " <br />";
print $split[2] . " <br />";
print $split[3] . " <br />";

$user = "Nama: <b>Wayan Bagus</b> <br /> Pekerjaan: <b>Programmer</b>";
preg_match_all("/<b>(.*)<\/b>/U", $user, $pat_array);

print $pat_array[0][0] . " <br> " . $pat_array[0][1] . "\n";

echo "<br />";
$email = "wayan@example.com";

$retval = ereg(("(\.)(com$)"), $email, $regs);

if ($retval == true) {
    echo "ditemukan : " . $regs[0];
} else {
    echo "tidak menemukan .com";
}