Genoemde groepe in PHP regulêre uitdrukkings
Kom ons sê met behulp van preg_match wil ons
'n datum opbreek in dag, maand en jaar. Laat ons
groepe daarvoor gebruik:
<?php
$str = '2025-10-29';
$reg = '#(\d{4})-(\d{2})-(\d{2})#';
preg_match($reg, $str, $match);
var_dump($match); // sal uitvoer ['2025-10-29', '2025', '10', '29']
?>
Soos jy kan sien, kry ons in die resultaat 'n skikking, waarin die nulste element die hele datum sal wees, in die eerste - die jaar, in die tweede - die maand, in die derde - die dag.
Soms sou dit egter gerieflik wees om die inhoud van die groepe as 'n assosiatiewe skikking te kry. Dit is in ons geval sou dit goed wees om die volgende skikking te kry:
[
'year' => '2025',
'month' => '10',
'day' => '29'
]
Vir hierdie doel bestaan daar 'n spesiale
sin in regulêre uitdrukkings. Hier is dit: (?<name>pattern),
waar pattern - dit is die regulêre uitdrukking, en name
- dit is die naam van die groep.
Kom ons herskryf ons regulêre uitdrukking vir die datum deur middel van genoemde groepe:
<?php
$str = '2025-10-29';
$reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
preg_match($reg, $str, $match);
var_dump($match);
?>
As gevolg hiervan sal ons 'n assosiatiewe skikking hê, waarin die sleutels die name van die groepe sal wees, en die waardes - dit wat daarin gevang is:
[
'year' => '2025',
'month' => '10',
'day' => '29',
]
Eintlik sal in die skikking met die resultaat die waardes
van die groepe beskikbaar wees sowel volgens naam
as volgens volgorde nommer. Dit wil sê, byvoorbeeld,
die jaar sal beskikbaar wees volgens die sleutel 'year'
en volgens nommer 1, die maand - volgens sleutel 'month'
en volgens nommer 2 en so meer:
[
'year' => '2025',
'month' => '10',
'day' => '29',
1 => '2025',
2 => '10',
3 => '29'
]
Die beskryfde genoemde groepe het nog 'n paar
alternatiewe sintakse: (?P<name>pattern)
en (?'name'pattern).
Gegee 'n string met tyd:
<?php
$str = '12:59:59';
?>
Plaas die ure, minute en sekondes in aparte genoemde groepe.
Skryf 'n funksie wat in die skikking met die resultaat al die genommerde groepe sal verwyder, en slegs die genoemde groepe sal laat.