تطبیق (preg_match)
تابع «preg_match» بررسی می کند آیا «عبارت باقاعده (RegExp)» در یک رشته پیدا می شود یا نه. یعنی فقط می گوید تطبیق هست یا نیست؛ مثل جست وجوی نام مدرسه در یک جمله.
تعریف و رفتار
تابع preg_match() اگر تطبیق پیدا شود، مقدار 1 می دهد. اگر پیدا نشود، 0 می دهد. اگر خطا رخ دهد، false برمی گردد. می توان نتیجه تطبیق ها را در آرایه $matches گرفت.
مثال ساده و مرحله به مرحله
- رشته را تعیین کن.
- الگو را با گزینه بی تفاوتی حروف بنویس.
- تابع را اجرا کن و نتیجه را ببین.
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str);
?>
نگارش و پارامترها
نگارش: preg_match(pattern, input, matches, flags, offset). پارامتر matches یک آرایه از تطبیق ها می سازد. با flags می توان ساختار matches را عوض کرد. با offset می توان از جایی وسط رشته جست وجو را شروع کرد.
PREG_OFFSET_CAPTURE: هر تطبیق را همراه موقعیت شروع برمی گرداند.PREG_UNMATCHED_AS_NULL: زیرالگوهای ناموفق راNULLمی گذارد.
مثال با موقعیت تطبیق
- یک رشته نمونه بساز.
- الگو را بنویس و پرچم موقعیت را بده.
- نتیجه و ایندکس شروع را چاپ کن.
<?php
$str = "Welcome to W3Schools";
$pattern = "/w3schools/i";
preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
نکات مهم
نکته: برای پیام خطای دقیق، بعد از خطا از preg_last_error کمک بگیر.
نکته: اگر به جای تطبیق، «جایگزینی» می خواهی، به preg_replace برو.
هشدار: اگر offset بزرگ تر از طول رشته باشد، نتیجه false است.
ارتباط های مفید و مطالعه بیشتر
برای «تطبیق با الگو» این صفحه مرجع است. همچنین صفحه مرجع عبارات باقاعده را در منبع ببین.
جمع بندی سریع
- 1: تطبیق یافت شد؛ 0: نشد.
$matchesجزئیات را نگه می دارد.PREG_OFFSET_CAPTUREموقعیت را می دهد.- با offset از وسط جست وجو کن.