دالة 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 "[4 حرفًا]" إلى "أيام" ، وبعد إجراء هذا الاستبدال ، يعثر استبدال 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