PHP Regular Ifodalaridagi Nomlangan Qarmoqlar
Faraz qilaylik, preg_match yordamida
sanani kun, oy va yilga ajratmoqchimiz. Buning
uchun qarmoqlardan foydalanamiz:
<?php
$str = '2025-10-29';
$reg = '#(\d{4})-(\d{2})-(\d{2})#';
preg_match($reg, $str, $match);
var_dump($match); // chiqaradi ['2025-10-29', '2025', '10', '29']
?>
Ko‘rib turganingizdek, natijada biz massivni olamiz, buning nolinchi elementi butun sana, birinchi elementida - yil, ikkinchisida - oy, uchinchisida - kun bo‘ladi.
Biroq, ba'zan qarmoqlar tarkibini assotsiativ massiv ko‘rinishida olish qulay bo‘lardi. Ya'ni bizning holatda quyidagi massivni olish yaxshi bo‘lar edi:
[
'year' => '2025',
'month' => '10',
'day' => '29'
]
Buning uchun regular ifodalarda maxsus
sintaksis mavjud. Mana u: (?<name>pattern),
bu yerda pattern - regular ifoda, name
esa qarmoq nomi.
Keling, sanani ifodalovchi regular ifodamizni nomlangan qarmoqlar orqali qayta yozamiz:
<?php
$str = '2025-10-29';
$reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
preg_match($reg, $str, $match);
var_dump($match);
?>
Natijada biz assotsiativ massivga ega bo‘lamiz, unda kalitlar qarmoq nomlari, qiymatlar esa ularga tushgan ma'lumotlar bo‘ladi:
[
'year' => '2025',
'month' => '10',
'day' => '29',
]
Aslida, natija massivida qarmoqlarning qiymatlari
ham nom, ham tartib raqami bo‘yicha mavjud bo‘ladi. Ya'ni, masalan,
yil 'year' kaliti
va 1 raqami orqali, oy - 'month' kaliti
va 2 raqami orqali va hokazo:
[
'year' => '2025',
'month' => '10',
'day' => '29',
1 => '2025',
2 => '10',
3 => '29'
]
Tasvirlangan nomlangan qarmoqlarning yana bir nechta
alternativ sintaksislari mavjud: (?P<name>pattern)
va (?'name'pattern).
Vaqtni ifodalovchi qator berilgan:
<?php
$str = '12:59:59';
?>
Soat, minut va soniyalarni alohida nomlangan qarmoqlarga joylashtiring.
Natija massividan barcha raqamlangan qarmoqlarni o‘chirib, faqat nomlanganlarini qoldiradigan funksiya yozing.