PHP में preg_match_all के व्यवहार को बदलना
preg_match_all फ़ंक्शन के चौथे पैरामीटर की सहायता से
कैप्चर ग्रुप्स के समूहीकरण के तरीके को बदला जा सकता है।
आइए देखें कि यह पैरामीटर कौन से मान ले सकता है:
| पैरामीटर | विवरण |
|---|---|
PREG_PATTERN_ORDER |
डिफ़ॉल्ट मोड। परिणामों को कैप्चर ग्रुप्स द्वारा समूहीकृत किया जाता है - ऐरे का शून्यवां एलिमेंट शून्यवें कैप्चर ग्रुप्स को समाहित करता है, पहला एलिमेंट पहले कैप्चर ग्रुप्स को समाहित करता है और इसी तरह आगे। |
PREG_SET_ORDER |
परिणामों को मिलानों द्वारा समूहीकृत किया जाता है - ऐरे का प्रत्येक एलिमेंट पाए गए कैप्चर ग्रुप्स वाले ऐरे को समाहित करता है। |
आइए अब उदाहरणों पर इस पैरामीटर के उपयोग को देखें:
उदाहरण
आइए एक स्ट्रिंग से सभी टाइमस्टैम्प्स और उनके घटकों को निकालें:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res);
print_r($res);
?>
कोड निष्पादित करने का परिणाम:
[
0 => ['12:01:02', '13:03:04', '14:05:06'],
1 => ['12', '13', '14'],
2 => ['01', '03', '05'],
3 => ['02', '04', '06']
]
उदाहरण
और अब मिलानों द्वारा समूहीकरण के लिए PREG_SET_ORDER फ्लैग
का उपयोग करते हैं:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res, PREG_SET_ORDER);
print_r($res);
?>
कोड निष्पादित करने का परिणाम:
[
0 => '12:01:02',
1 => '12',
2 => '01',
3 => '02'
],
[
0 => '13:03:04',
1 => '13',
2 => '03',
3 => '04'
],
[
0 => '14:05:06',
1 => '14',
2 => '05',
3 => '06'
]
प्रायोगिक कार्य
एक स्ट्रिंग दी गई है जिसमें तारीखें हैं:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
सभी तारीखों को ढूंढें, वर्ष, महीने और दिन को अलग-अलग कैप्चर ग्रुप्स में अलग करते हुए। ऐसा करें कि पहली सब-ऐरे में पहली तारीख उसके कैप्चर ग्रुप्स के साथ आए, दूसरी सब-ऐरे में - दूसरी तारीख उसके कैप्चर ग्रुप्स के साथ और इसी तरह आगे।