English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يستخدم دالة preg_replace_callback لبحث عن تعبيرات نمطية واستبدالها باستخدام دالة استدعاء.
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
سلوك هذه الدالة، بخلاف تحديد callback لاستبدال replacement في حساب تبديل النص، هو نفسه مثل preg_replace().
شرح المعلمات:
$pattern: النمط الذي يتم البحث عنه، يمكن أن يكون نصًا أو مجموعة من النصوص.
$callback: دالة استدعاء، يتم استدعاؤها في كل مرة يتم فيها تبديل النص، ويتم تمرير النتائج التي تم إلتقاطها من subject إلى الدالة.
$subject: النص أو مجموعة النصوص المستهدف للبحث والتغيير.
$limit: اختياري، يمثل عدد مرات التبديل القصوى لكل نموذج لكل نص subject. القيمة الافتراضية هي -1 (بدون حدود).
$count: اختياري، يمثل عدد مرات التنفيذ للتبديل.
إذا كان subject مجموعة، فإن preg_replace_callback() تعود مجموعة، في جميع الحالات الأخرى تعود نصًا. يتم العودة إلى NULL في حالة حدوث خطأ.
إذا تم العثور على التكوين، يتم العودة إلى النص المستبدل (أو مجموعة من النصوص)، في جميع الحالات الأخرى سيتم العودة إلى subject بدون تغيير.
<?php
// زيادة السنة في النص.
$text = "يوم النكتة هو 04/01/2002\n";
$text.= "آخر عيد الميلاد كان 12/24/2001\n";
// دالة الاستدعاء
function next_year($matches)
{
// عادة: $matches[0] هو التكوين الكامل للإلتقاط
// $matches[1] هو التكوين الأول للإلتقاط
// بهذا الشكل
return $matches[1].(\$matches[2]+1);
}
echo preg_replace_callback(
"|\(\d{2}/\d{2}/\)(\d{4})|",
"next_year",
$text);
?>
نتيجة التنفيذ كما يلي:
يوم النكتة هو 04/01/2003 آخر عيد الميلاد كان 12/24/2002