برش با الگو (preg_split)
تابع «برش با الگو» رشته را با «عبارت باقاعده (Regular Expression)» می شکند. یعنی جداکننده ها الگو هستند، نه فقط یک کاراکتر ساده. مثل بریدن کیک با قالب های مختلف.
تعریف و کاربرد برش با الگو
preg_split() رشته را به آرایه ای از بخش ها می شکند. جداکننده ها همان الگوهایی هستند که با regex مشخص می کنی. نتیجه یک آرایه از زیررشته هاست.
نگارش و پارامترها
نگارش: preg_split(pattern, string, limit, flags). «pattern» الگوی جداکننده است. «string» متنی است که می بُری. «limit» سقف تعداد بخش هاست. «flags» رفتار آرایه خروجی را تغییر می دهد.
مثال: شکستن تاریخ به بخش ها
- الگو را برای خط تیره، فاصله و دونقطه بساز.
- تابع را روی تاریخ اجرا کن.
- آرایه خروجی را چاپ کن.
<?php
$date = "1970-01-01 00:00:00";
$pattern = "/[-\s:]/";
$components = preg_split($pattern, $date);
print_r($components);
?>
پرچم ها (Flags) و محدودیت
می توانی بخش های خالی را حذف کنی، جداکننده پرانتزی را نگه داری، یا موقعیت هر بخش را بگیری. همچنین با limit تعداد بخش ها را محدود کن.
نگه داشتن جداکننده با PREG_SPLIT_DELIM_CAPTURE
<?php
$date = "1970-01-01 00:00:00";
$pattern = "/([-\s:])/";
$components = preg_split($pattern, $date, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($components);
?>
گرفتن متن و موقعیت با PREG_SPLIT_OFFSET_CAPTURE
<?php
$date = "1970-01-01";
$pattern = "/-/";
$components = preg_split($pattern, $date, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($components);
?>
نکات و هشدارها
نکته: اگر بخش های خالی نمی خواهی، از PREG_SPLIT_NO_EMPTY استفاده کن.
نکته: برای جستجو به جای برش، از preg_match کمک بگیر.
نکته: اگر نیاز به جایگزینی داری، preg_replace مناسب است.
هشدار: الگوهای اشتباه نتیجه ناخواسته می دهند. لینک برش با الگو را برای مرور سریع نگه دار.
جمع بندی سریع
- preg_split با regex برش می زند.
- limit تعداد بخش ها را محدود می کند.
- DELIM_CAPTURE جداکننده را نگه می دارد.
- OFFSET_CAPTURE متن و موقعیت را می دهد.