Mfuko Wenye Majina Katika Usimbaji Fupi wa PHP
Tuseme kwa kutumia preg_match tunataka
kugawanya tarehe kuwa siku, mwezi na mwaka. Tumia
hii kwa kutumia mifuko:
<?php
$str = '2025-10-29';
$reg = '#(\d{4})-(\d{2})-(\d{2})#';
preg_match($reg, $str, $match);
var_dump($match); // atatoa ['2025-10-29', '2025', '10', '29']
?>
Kama unavyoona, kwa matokeo tunapata safu, ambayo kwenye kipengele cha sifuri kutakuwa na tarehe yote, ya kwanza - mwaka, ya pili - mwezi, ya tatu - siku.
Wakati mwingine, hata hivyo, ingekuwa rahisi kupata yaliyomo ya mifuko kwa namna ya safu ya kiashiria. Yaani kwa kesi yetu ingekuwa vizuri kupata safu kama hii:
[
'year' => '2025',
'month' => '10',
'day' => '29'
]
Kwa hili katika usimbaji fupu kuna sintaksia maalum.
Hii ni hii: (?<name>pattern),
ambapo pattern - hii ni usimbaji fupi, na name
- hili ni jina la mfuko.
Wacha tuandike tena usimbaji wetu fupi wa tarehe kupitia mifuko yenye majina:
<?php
$str = '2025-10-29';
$reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
preg_match($reg, $str, $match);
var_dump($match);
?>
Kwa matokeo tutapata safu ya kiashiria, ambayo funguo zitakuwa majina ya mifuko, na maadili - yale yaliyoingia ndani yake:
[
'year' => '2025',
'month' => '10',
'day' => '29',
]
Kwa kweli katika safu na matokeo maadili
ya mifuko yatapatikana kwa jina na
kwa nambari ya mpangilio. Yaani, kwa mfano,
mwaka utapatikana kwa funguo 'year'
na kwa nambari 1, mwezi - kwa funguo 'month'
na kwa nambari 2 na kadhalika:
[
'year' => '2025',
'month' => '10',
'day' => '29',
1 => '2025',
2 => '10',
3 => '29'
]
Mifuko iliyoelezwa yenye majina ina sintaksia mbadala kadhaa zaidi:
(?P<name>pattern)
na (?'name'pattern).
Imetolewa kamba na wakati:
<?php
$str = '12:59:59';
?>
Weka masaa, dakika na sekunde kwenye mifuko tofauti yenye majina.
Andika kitendakazi, ambacho katika safu na matokeo itafuta mifuko yote iliyopangwa kwa nambari, ikiacha ile yenye majina tu.