Kantong dalam Penggantian dengan Regex di PHP
Saat bekerja dengan fungsi preg_replace,
jika kita menaruh sesuatu ke dalam kantong dalam regex,
maka dalam string pengganti kita dapat menyisipkan konten
dari kantong tersebut dengan menulis tanda dolar $ dan nomor
kantong. Misalnya, $0 - kantong nol,
$1 - kantong pertama, $2 - kantong kedua
dan seterusnya.
Mengapa ini diperlukan dan bagaimana menggunakannya mari kita lihat pada contoh-contoh.
Contoh
Mari kita temukan semua angka dan menggantinya dengan angka yang sama, tetapi dalam kurung kurawal. Untuk melakukan ini, semua angka yang ditemukan akan kita ganti dengan dirinya sendiri, tetapi dalam kurung kurawal:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Hasilnya, ke dalam variabel akan tercatat berikut ini:
'{1} {23} {456} xax'
Contoh
Mari kita temukan semua string yang merepresentasikan
angka dengan karakter 'x' di sekelilingnya dan ganti
angka-angka tersebut dengan dirinya sendiri, tetapi dengan tanda '!' di sekitarnya:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Hasilnya, ke dalam variabel akan tercatat berikut ini:
'!1! !23! !456! xax'
Contoh
Mari kita selesaikan masalah berikut: diberikan string
berbentuk 'aaa@bbb' - huruf, lalu tanda @,
lalu huruf. Perlu menukar posisi huruf
sebelum '@' dan sesudahnya. Mari kita implementasikan:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Hasilnya, ke dalam variabel akan tercatat berikut ini:
'bbb@aaa ddd@ccc'
Tugas Praktis
Diberikan string:
<?php
$str = '12 34 56 78';
?>
Tukar posisi digit dalam semua bilangan dua digit.
Diberikan string dengan tanggal:
<?php
$str = '31.12.2025';
?>
Ubah tanggal ini menjadi '2025.12.31'.