جایگزینی (preg_replace)
تابع «preg_replace» برای «جایگزینی با الگو» در رشته هاست. «عبارت باقاعده (RegExp)» یعنی الگوی جست وجوی انعطاف پذیر. با آن می توان متن ها را مثل فیلتر بازی، دقیق تغییر داد.
تعریف و کاربرد
preg_replace() همه بخش های مطابق الگو را جایگزین می کند. ورودی می تواند یک رشته یا آرایه باشد. خروجی هم همان نوع را برمی گرداند.
نگارش و پارامترها
نگارش: preg_replace(patterns, replacements, input, limit, count). «patterns» می تواند یک الگو یا آرایه الگوها باشد. «replacements» می تواند یک رشته یا آرایه باشد. «limit» سقف تعداد جایگزینی در هر رشته است. «count» تعداد جایگزینی انجام شده را می دهد.
نکته درباره چند الگو
الگوها به ترتیب اعمال می شوند. نتیجه الگوی اول، ورودی الگوی بعدی می شود. این رفتار گاهی نتیجه را غیرمنتظره می کند.
مثال ساده: حساس نبودن به حروف
- رشته نمونه را بساز.
- الگو را با گزینه
iبنویس. - تابع را اجرا کن و چاپ کن.
<?php
$str = 'Visit Microsoft!';
$pattern = '/microsoft/i';
echo preg_replace($pattern, 'W3Schools', $str);
?>
بازارجاع ها در جایگزینی
«بازارجاع (Backreference)» یعنی استفاده از گروه های الگو در متن جایگزین. مانند $1 یا \1. همچنین $0 یا \0 کل تطبیق را می گذارد.
نکات و هشدارها
نکته: اگر limit را ننویسی، بی نهایت جایگزینی انجام می شود.
نکته: برای «فقط موارد مطابق» می توانی preg_filter را ببینی.
نکته: اگر منطق تو تابع باشد، preg_replace_callback مناسب تر است.
نکته: برای خطاها از preg_last_error کمک بگیر.
هشدار: ترتیب چند الگو می تواند خروجی را تغییر بدهد. آزمایش کن.
مطالعه مرتبط و مسیر یادگیری
اگر فقط می خواهی «بررسی تطبیق» انجام دهی، صفحه preg_match را ببین. برای گرفتن همه تطبیق ها، preg_match_all بهتر است. و برای «جایگزینی با الگو» همین صفحه جایگزینی با الگو مرجع توست.
جمع بندی سریع
- برای جایگزینی با الگو استفاده کن.
- یک یا چند الگو پشتیبانی می شود.
- می توانی limit و count بدهی.
- بازارجاع ها متن خروجی را قوی می کنند.