فیلتر با الگو (preg_filter)
با «فیلتر با الگو (preg_filter)» می توان رشته ها را بر اساس «الگو (Pattern)» عوض کرد. «عبارت باقاعده (RegExp)» یعنی الگویی برای جست وجو. اگر روی آرایه اجرا شود، آرایه برمی گردد. اگر روی رشته اجرا شود، رشته برمی گردد. اما اگر هیچ تطابقی نباشد و ورودی رشته باشد، مقدار null برمی گردد.
تعریف و رفتار تابع
تابع preg_filter() قسمت های مطابق با الگو را با «جایگزین (Replacement)» عوض می کند. اگر ورودی آرایه باشد، خروجی هم آرایه است. اگر ورودی رشته باشد، خروجی رشته است. اما اگر هیچ تطابقی در رشته نبود، خروجی null می شود. این تابع مانند preg_replace است؛ با این تفاوت که ورودی های بی تطابق را کنار می گذارد.
مثال عملی مرحله به مرحله
- یک آرایه از جمله ها آماده کن.
- الگوی اعداد را مشخص کن.
- با
preg_filterاعداد را داخل پرانتز بگذار. - خروجی را چاپ کن و تفاوت را ببین.
<?php
$input = [
"It is 5 o'clock",
"40 days",
"No numbers here",
"In the year 2000"
];
$result = preg_filter('/[0-9]+/', '($0)', $input);
print_r($result);
?>
نحوه نگارش و پارامترها
نگارش: preg_filter(pattern, replacement, input, limit, count). «limit» تعداد جایگزینی در هر رشته را محدود می کند. «count» تعداد جایگزینی انجام شده را برمی گرداند. در «replacement» می توان «ارجاع پشتی (Backreference)» مثل $1 یا \1 نوشت.
نکات و هشدارها
نکته: اگر ورودی رشته باشد و تطابقی نباشد، خروجی null است.
نکته: از preg_replace وقتی همه ورودی ها را می خواهی استفاده کن.
هشدار: الگوهای اشتباه می توانند نتیجه خالی بدهند. الگو را ساده شروع کن.
ارتباط های مفید با فیلتر با الگو
برای مرور کلی، صفحه مرجع عبارات باقاعده را ببین. همچنین از فیلتر با الگو (preg_filter) در کنار جایگزینی های دقیق استفاده کن.
جمع بندی سریع
- فقط موارد مطابق را برمی گرداند.
- رشته بی تطابق، null می شود.
- آرایه ورودی، آرایه خروجی می دهد.
- ارجاع پشتی با
$nیا\nقابل استفاده است.