Home » PHP » Fungsi preg_replace_callback_array() RegEx PHP

Fungsi preg_replace_callback_array() RegEx PHP

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

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

ParameterDeskripsi
patternRequired. 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.
inputRequired. String atau array string tempat penggantian dilakukan
limitOptional. Default-nya -1, artinya tidak terbatas. Menetapkan batas berapa banyak penggantian yang dapat dilakukan di setiap string
countOptional. 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]

You may also like