ฟังก์ชัน mb_ereg_replace_callback() ใช้ค้นหาและแทนที่ regular expression ด้วยการรองรับ multibyte โดยใช้ callback function ฟังก์ชันจะสแกนสตริงจับคู่กับ pattern แล้วแทนที่ด้วยผลลัพธ์จาก callback คล้ายกับ mb_ereg_replace() แต่ใช้ callback แทน replacement string ตรงๆ รองรับตั้งแต่ PHP 5.4 ขึ้นไป
รูปแบบการใช้งาน (Syntax)
string mb_ereg_replace_callback(string $pattern, callable $callback, string $string, string $options = "")
พารามิเตอร์
- $pattern – Regular expression pattern (รองรับ multibyte)
- $callback – ฟังก์ชัน callback ที่รับ array ของ matched elements และคืนค่า replacement string
- $string – สตริงที่ต้องการค้นหาและแทนที่
- $options – ตัวเลือกการค้นหา
หมายเหตุ: สามารถใช้ anonymous function (closure) ประกาศ callback ภายในการเรียก mb_ereg_replace_callback() ได้ ทำให้โค้ดสะอาดและไม่ปนเป้อน namespace
ค่าที่คืนกลับ
คืนค่าสตริงที่แทนที่แล้วเมื่อสำเร็จ คืน false หากเกิดข้อผิดพลาด คืน null หากสตริงไม่ถูกต้องสำหรับ encoding ปัจจุบัน
ตัวอย่าง 1: ใช้ Named Function
<?php
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";
function next_year($matches) {
return $matches[1] . ($matches[2] + 1);
}
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
"next_year",
$result
);
?>
ผลลัพธ์
April Fools day is 04/01/2020 Next match is 12/24/2022
ตัวอย่าง 2: ใช้ Anonymous Function
<?php
$result = "April Fools day is 04/01/2019\n";
$result .= "Next match is 12/24/2021\n";
echo mb_ereg_replace_callback(
"(\d{2}/\d{2}/)(\d{4})",
function ($matches) {
return $matches[1] . ($matches[2] + 1);
},
$result
);
?>
ผลลัพธ์
April fools day is 04/01/2020 Next match is 12/24/2022
หมายเหตุ: ในตัวอย่างที่ 2 ใช้ anonymous function แทน named function แตผลลัพธ์เหมือนกัน