جایگزینی با کال بک (preg_replace_callback)
این تابع برای «جایگزینی با الگو و کُد خودت» است. «کال بک (Callback)» یعنی تابعی که ما می نویسیم و هنگام جایگزینی، اجرا می شود. مثل وقتی معلم سؤال می دهد و تو جواب را حساب می کنی.
تعریف و کاربرد
preg_replace_callback() یک الگو و یک کال بک می گیرد. هر تطبیق الگو، با خروجی کال بک عوض می شود. خروجی می تواند رشته یا آرایه باشد.
نگارش و پارامترها
نگارش: preg_replace_callback(pattern, callback, input, limit, count). «pattern» الگوی جست وجو است. «callback» تابع محاسبه جایگزین است. «input» متن یا آرایه متون است. «limit» سقف جایگزینی است. «count» تعداد جایگزینی انجام شده را برمی گرداند.
ساختار آرایه matches
کال بک آرایه matches را می گیرد. خانه صفر کل تطبیق است. بقیه خانه ها گروه ها هستند.
مثال: نوشتن طول هر واژه
- الگو را برای واژه ها بنویس.
- کال بک بساز و طول را برگردان.
- تابع را اجرا کن و نتیجه را چاپ کن.
<?php
function countLetters($matches) {
return $matches[0] . '(' . strlen($matches[0]) . ')';
}
$input = "Welcome to W3Schools.com!";
$pattern = '/[a-z0-9\.]+/i';
$result = preg_replace_callback($pattern, 'countLetters', $input);
echo $result;
?>
نکات مهم
نکته: اگر limit ندهی، محدودیت وجود ندارد.
نکته: از preg_replace وقتی جایگزینی ساده است استفاده کن.
نکته: برای خطای الگو از preg_last_error کمک بگیر.
هشدار: اگر چند الگو زنجیره ای داری، ترتیب نتیجه را عوض می کند.
جمع بندی سریع
- کال بک خروجی نهایی را می سازد.
- matches[0] کل تطبیق است.
- limit سقف جایگزینی است.
- count تعداد جایگزینی را می دهد.