PHP preg_replace_callback_array()ฟังก์ชั่น
ตัวอย่าง
แสดงจำนวนตัวอักษรหรือตัวเลขที่พบในแต่ละคำในประโยค:
<?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;
?>
ความหมายและการใช้งาน
ฟังก์ชันpreg_replace_callback_array()
ส่งคืนสตริงหรืออาร์เรย์ของสตริงที่ตรงกับชุดของนิพจน์ทั่วไปจะถูกแทนที่ด้วยค่าส่งคืนของฟังก์ชันเรียกกลับ
หมายเหตุ:สำหรับแต่ละสตริง ฟังก์ชันจะประเมินรูปแบบตามลำดับที่กำหนด ผลลัพธ์ของการประเมินรูปแบบแรกบนสตริงนั้นถูกใช้เป็นสตริงอินพุตสำหรับรูปแบบที่สองเป็นต้น นี้สามารถนำไปสู่พฤติกรรมที่ไม่คาดคิด
ไวยากรณ์
preg_replace_callback_array(patterns, input, limit, count)
ค่าพารามิเตอร์
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 |
รายละเอียดทางเทคนิค
คืนมูลค่า: | ส่งกลับสตริงหรืออาร์เรย์ของสตริงที่เกิดจากการใช้การแทนที่กับสตริงอินพุตหรือสตริง |
---|---|
รุ่น PHP: | 7+ |
ตัวอย่างเพิ่มเติม
ตัวอย่าง
ตัวอย่างนี้แสดงให้เห็นถึงผลกระทบที่ไม่คาดคิดที่อาจเกิดขึ้นจากรูปแบบที่กำลังได้รับการประเมินตามลำดับ ขั้นแรก การแทนที่ countLetters จะเพิ่ม "[4letter]" เป็น "days" และหลังจากที่ทำการแทนที่แล้ว การแทนที่ countDigits จะค้นหา "4" ใน "4letter" และเพิ่ม "[1digit]" ลงไป:
<?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;
?>
❮ การอ้างอิง PHP RegExp