PHP-daky regulýar ifadelerde atlandyrylan kartlar

preg_match bilen bir seneni güne, aýa we ýyla bölmek isleýändigimizi öýlän. Bunuň üçin kartlary ulanyň:

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

Görşüňiz ýaly, netijede noldaky elementde tutuş sene, birinjide ýyl, ikinjide aý, üçünjide gün boljak massiw alýarys.

Emma käte-de, kart mazmunyny assosiatiw massiw görnüşinde almak amatly bolar. Ýagny, bizim ýagdaýymyzda şeýle massiw almak gowy bolar:

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

Bunun üçin regulýar ifadelerde aýratyn sintaksis bar. Ol şeýle: (?<name>pattern), bu ýerde pattern regulýar ifade, name bolsa kartyň adydyr.

Indi senäniň üçin bolan regulýar ifademizi atlandyrylan kartlar bilen ýazaýalyň:

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

Netijede bizde klýuçlary kart atlary, bahalary bolsa olara düşen zatlar bolan assosiatiw massiw bolar:

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

Aslynda, netije massiwinde kart bahalary at boýunça hem, tertip belgisi boýunça hem elýeterli bolar. Ýagny, mysal üçin, ýyl 'year' klýuçy we 1 belgisi boýunça, aý 'month' klýuçy we 2 belgisi boýunça we ş.m. elýeterli bolar:

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

Beýan edilen atlandyrylan kartlaryň ýene birnäçe alternatiw sintaksisi bar: (?P<name>pattern) we (?'name'pattern).

Задание 1

Wagt bilen setir berlen:

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

Sagady, minutlary we sekuntlary aýratyn atlandyrylan kartlara goýuň.

Задание 2

Netije massiwinden ähli belgili kartlary aýyryp, diňe atlandyrylanlary galdyrýan funksiýa ýazyň.