⊗ppPmRgNP 255 of 447 menu

Pavadinti grupavimai PHP reguliariosiose išraiškose

Tarkime, kad naudodami preg_match norime išskaidyti datą į dieną, mėnesį ir metus. Panaudokime tam grupavimus:

<?php $str = '2025-10-29'; $reg = '#(\d{4})-(\d{2})-(\d{2})#'; preg_match($reg, $str, $match); var_dump($match); // išves ['2025-10-29', '2025', '10', '29'] ?>

Kaip matote, rezultate gauname masyvą, kuriame nuliname elemente bus visa data, pirmame - metai, antrame - mėnuo, trečiame - diena.

Kartais, tačiau, būtų patogu gauti grupavimų turinį kaip asociatyvų masyvą. Tai yra mūsų atveju būtų gerai gauti štai tokį masyvą:

[ 'year' => '2025', 'month' => '10', 'day' => '29' ]

Tam reguliariosiose išraiškose egzistuoja speciali sintaksė. Štai ji: (?<name>pattern), kur pattern - tai reguliarioji išraiška, o name - tai grupavimo vardas.

Perrašykime mūsų datos reguliariąją išraišką naudodami pavadintus grupavimus:

<?php $str = '2025-10-29'; $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#'; preg_match($reg, $str, $match); var_dump($match); ?>

Rezultate mes gausime asociatyvų masyvą, kuriame raktai bus grupavimų vardai, o reikšmės - tai, kas į juos pateko:

[ 'year' => '2025', 'month' => '10', 'day' => '29', ]

Tiesą sakant, rezultatų masyve grupavimų reikšmės bus prieinamos ir pagal vardą, ir pagal eilės numerį. Tai yra, pavyzdžiui, metai bus prieinami pagal raktą 'year' ir pagal numerį 1, mėnuo - pagal raktą 'month' ir pagal numerį 2 ir taip toliau:

[ 'year' => '2025', 'month' => '10', 'day' => '29', 1 => '2025', 2 => '10', 3 => '29' ]

Aprašyti pavadinti grupavimai turi dar keletą alternatyvių sintaksų: (?P<name>pattern) ir (?'name'pattern).

Duota eilutė su laiku:

<?php $str = '12:59:59'; ?>

Padėkite valandas, minutes ir sekundes į atskirus pavadintus grupavimus.

Parašykite funkciją, kuri masyve su rezultatu pašalintų visus sunumeruotus grupavimus, palikdama tik pavadintus.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti