PHP-তে নিয়মিত এক্সপ্রেশনে নামযুক্ত গ্রুপ
ধরুন preg_match ব্যবহার করে আমরা
একটি তারিখকে দিন, মাস এবং বছরে বিভক্ত করতে চাই। এর জন্য
গ্রুপ ব্যবহার করা যাক:
<?php
$str = '2025-10-29';
$reg = '#(\d{4})-(\d{2})-(\d{2})#';
preg_match($reg, $str, $match);
var_dump($match); // আউটপুট দেবে ['2025-10-29', '2025', '10', '29']
?>
আপনি দেখতে পাচ্ছেন, ফলাফল হিসেবে আমরা একটি অ্যারে পাই, যার শূন্য ইনডেক্সে সম্পূর্ণ তারিখটি থাকে, প্রথম ইনডেক্সে - বছর, দ্বিতীয়টিতে - মাস, তৃতীয়টিতে - দিন।
যাইহোক, মাঝে মাঝে গ্রুপের বিষয়বস্তুটি একটি অ্যাসোসিয়েটিভ অ্যারে হিসাবে পাওয়া সুবিধাজনক হবে। অর্থাৎ আমাদের ক্ষেত্রে এইরকম একটি অ্যারে পাওয়া ভালো হবে:
[
'year' => '2025',
'month' => '10',
'day' => '29'
]
এই জন্য নিয়মিত এক্সপ্রেশনে একটি বিশেষ
সিনট্যাক্স আছে। এটি হলো: (?<name>pattern),
যেখানে pattern হলো নিয়মিত এক্সপ্রেশন, এবং name
হলো গ্রুপের নাম।
আসুন নামযুক্ত গ্রুপ ব্যবহার করে তারিখের জন্য আমাদের নিয়মিত এক্সপ্রেশনটি আবার লিখি:
<?php
$str = '2025-10-29';
$reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
preg_match($reg, $str, $match);
var_dump($match);
?>
ফলস্বরূপ, আমরা একটি অ্যাসোসিয়েটিভ অ্যারে পাব, যার কীগুলি হবে গ্রুপের নাম, এবং মানগুলি হবে সেগুলিতে যা পড়েছে:
[
'year' => '2025',
'month' => '10',
'day' => '29',
]
আসলে, ফলাফলের অ্যারেতে গ্রুপের মানগুলি
নাম এবং ক্রমিক নম্বর উভয় দ্বারাই অ্যাক্সেস করা যাবে।
অর্থাৎ, উদাহরণস্বরূপ,
বছর 'year' কী দ্বারা
এবং 1 নম্বর দ্বারা অ্যাক্সেস করা যাবে,
মাস - 'month' কী দ্বারা
এবং 2 নম্বর দ্বারা এবং এভাবেই চলবে:
[
'year' => '2025',
'month' => '10',
'day' => '29',
1 => '2025',
2 => '10',
3 => '29'
]
বর্ণিত নামযুক্ত গ্রুপগুলির আরও কয়েকটি
বিকল্প সিনট্যাক্স রয়েছে: (?P<name>pattern)
এবং (?'name'pattern)।
একটি সময় সহ একটি স্ট্রিং দেওয়া আছে:
<?php
$str = '12:59:59';
?>
ঘন্টা, মিনিট এবং সেকেন্ড আলাদা আলাদা নামযুক্ত গ্রুপে রাখুন।
একটি ফাংশন লিখুন, যা ফলাফলের অ্যারেতে সমস্ত সংখ্যাযুক্ত গ্রুপ মুছে দেবে, শুধুমাত্র নামযুক্ত গ্রুপগুলি রেখে দেবে।