Definisi dan Penggunaan
Fungsi preg_replace_callback_array()
digunakan untuk mengembalikan string atau array string di mana kecocokan dari satu set ekspresi reguler diganti dengan nilai kembalian dari fungsi callback.
Catatan: Untuk setiap string, fungsi mengevaluasi pola dalam urutan yang diberikan. Hasil evaluasi pola pertama pada string digunakan sebagai input string untuk pola kedua dan seterusnya. Hal ini dapat menyebabkan perilaku yang tidak terduga.
Syntax
preg_replace_callback_array(patterns, input, limit, count)
Nilai Parameter
Parameter | Deskripsi |
---|---|
pattern | Required. Array asosiatif yang mengaitkan pola ekspresi reguler ke fungsi callback. Fungsi callback memiliki satu parameter yang merupakan kecocokan array. Elemen pertama dalam array berisi kecocokan untuk seluruh ekspresi sementara elemen lainnya memiliki kecocokan untuk setiap grup dalam ekspresi. |
input | Required. String atau array string tempat penggantian dilakukan |
limit | Optional. Default-nya -1, artinya tidak terbatas. Menetapkan batas berapa banyak penggantian yang dapat dilakukan di setiap string |
count | Optional. Setelah fungsi dijalankan, variabel ini akan berisi angka yang menunjukkan berapa banyak penggantian yang dilakukan |
Detail Teknis
Return Value: | Mengembalikan string atau array string yang dihasilkan dari penerapan penggantian ke input string atau string |
---|---|
PHP Version: | 7+ |
Contoh 1
Tunjukkan berapa banyak huruf atau angka yang ditemukan di setiap kata dalam kalimat:
<?php function countLetters($matches) { return $matches[0] . '[' . strlen($matches[0]) . 'letter]'; } function countDigits($matches) { return $matches[0] . '[' . strlen($matches[0]) . 'digit]'; } $input = "Ada 7 hari dalam seminggu."; $patterns = [ '/\b[a-z]+\b/i' => 'countLetters', '/\b[0-9]+\b/' => 'countDigits' ]; $result = preg_replace_callback_array($patterns, $input); echo $result; ?> /* Output : Ada[3letter] 7[1digit] hari[4letter] dalam[5letter] seminggu[8letter].
Contoh 2
Contoh ini mengilustrasikan efek yang berpotensi tidak terduga dari pola yang dievaluasi secara berurutan. Pertama, penggantian countLetters menambahkan “[4letter]” ke “hari” dan setelah penggantian itu dilakukan, penggantian countDigits menemukan “4” di “4letter” dan menambahkan “[1digit]” ke dalamnya:
<?php function countLetters($matches) { return $matches[0] . '[' . strlen($matches[0]) . 'letter]'; } function countDigits($matches) { return $matches[0] . '[' . strlen($matches[0]) . 'digit]'; } $input = "365 hari"; $patterns = [ '/[a-z]+/i' => 'countLetters', '/[0-9]+/' => 'countDigits' ]; $result = preg_replace_callback_array($patterns, $input); echo $result; ?> // Output : 365[3digit] hari[4[1digit]letter]