Fungsi PHP preg_replace_callback_array()
Contoh
Tunjukkan berapa banyak huruf atau angka yang ditemukan di setiap kata dalam sebuah kalimat:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Definisi dan Penggunaan
Fungsi preg_replace_callback_array()
mengembalikan string atau larik string di mana kecocokan sekumpulan ekspresi reguler diganti dengan nilai kembalian fungsi panggilan balik.
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. Ini dapat menyebabkan perilaku yang tidak terduga.
Sintaksis
preg_replace_callback_array(patterns, input, limit, count)
Nilai Parameter
Parameter | Description |
---|---|
pattern | Required. An associative array which associates regular
expression patterns to callback functions. The callback functions have one parameter which is an array of matches.The first element in the array contains the match for the whole expression while the remaining elements have matches for each of the groups in the expression. |
input | Required. The string or array of strings in which replacements are being performed |
limit | Optional. Defaults to -1, meaning unlimited. Sets a limit to how many replacements can be done in each string |
count | Optional. After the function has executed, this variable will contain a number indicating how many replacements were performed |
Detail Teknis
Nilai Kembali: | Mengembalikan string atau larik string yang dihasilkan dari penerapan penggantian ke string atau string input |
---|---|
Versi PHP: | 7+ |
Lebih Banyak Contoh
Contoh
Contoh ini menggambarkan 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 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
Referensi RegExp PHP