⊗ppPmRgNP 255 of 447 menu

Navngitte grupper i PHP regex

La oss si at vi ved hjelp av preg_match ønsker å dele opp en dato i dag, måned og år. La oss bruke grupper for dette:

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

Som du ser, får vi et array som resultat, der elementet på indeks 0 vil være hele datoen, på indeks 1 - året, på indeks 2 - måneden, på indeks 3 - dagen.

Noen ganger ville det imidlertid vært praktisk å få innholdet i gruppene som et assosiativt array. Det vil si at i vårt tilfelle ville det vært fint å få et array som dette:

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

For dette finnes det en spesiell syntaks i regex. Her er den: (?<name>pattern), hvor pattern er regex-mønsteret, og name er navnet på gruppen.

La oss omskrive vårt dato-regex-mønster ved hjelp av navngitte grupper:

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

Som et resultat vil vi få et assosiativt array, der nøklene vil være navnene på gruppene, og verdiene vil være det som ble fanget opp i dem:

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

I virkeligheten i arrayet med resultatet vil verdiene fra gruppene være tilgjengelige både ved navn og ved rekkefølgenummer. Det vil si for eksempel at året vil være tilgjengelig via nøkkelen 'year' og via nummer 1, måneden - via nøkkelen 'month' og via nummer 2, og så videre:

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

De beskrevne navngitte gruppene har noen flere alternative syntakser: (?P<name>pattern) og (?'name'pattern).

Det er gitt en streng med tid:

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

Plasser timer, minutter og sekunder i separate navngitte grupper.

Skriv en funksjon som i arrayet med resultatet sletter alle nummererte grupper, og bare beholder de navngitte.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis