⊗ppPmRgNP 255 of 447 menu

Genoemde groepen in PHP reguliere expressies

Stel dat we met preg_match een datum willen opbreken in dag, maand en jaar. Laten we hiervoor groepen gebruiken:

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

Zoals je ziet, krijgen we als resultaat een array, waarin het nulde element de volledige datum bevat, het eerste - het jaar, het tweede - de maand, het derde - de dag.

Soms zou het echter handig zijn om de inhoud van de groepen te krijgen als een associatieve array. Dat wil zeggen, in ons geval zou het mooi zijn om de volgende array te krijgen:

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

Hiervoor bestaat er een speciale syntaxis in reguliere expressies. Hier is hij: (?<name>pattern), waarbij pattern de reguliere expressie is, en name - de naam van de groep.

Laten we onze reguliere expressie voor de datum herschrijven met genoemde groepen:

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

Het resultaat is een associatieve array, waarin de sleutels de namen van de groepen zijn, en de waarden - wat erin is gekomen:

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

In werkelijkheid zullen in de resultatenarray de waarden van de groepen zowel op naam als op volgnummer toegankelijk zijn. Dat wil zeggen, bijvoorbeeld, het jaar is toegankelijk via de sleutel 'year' en op nummer 1, de maand - via de sleutel 'month' en op nummer 2, enzovoort:

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

De beschreven genoemde groepen hebben nog enkele alternatieve syntaxen: (?P<name>pattern) en (?'name'pattern).

Gegeven een string met een tijd:

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

Plaats de uren, minuten en seconden in aparte genoemde groepen.

Schrijf een functie die in de resultatenarray alle genummerde groepen verwijdert, en alleen de genoemde groepen overlaat.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren