PHP тұрақты өрнектеріндегі атаулы кармандар

preg_match көмегімен күнтізбелік күнді күн, ай және жылға бөлгіміз келеді делік. Ол үшін кармандарды қолданайық:

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']
?>

Көріп отырғаныңыздай, нәтижеде біз массаiv аламыз, онда нөлдік элементте бүкіл күнтізбелік күн болады, біріншісінде - жыл, екіншісінде - ай, үшіншісінде - күн.

Алайда, кейде кармандардың мазмұн ассоциативті массаiv түрінде алу ыңғайлы болар еді. Яғни біздің жағдайда мынадай массаiv алу өте жақсы болар еді:

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

Ол үшін тұрақты өрнектерде арнайы синтаксис бар. Мінеки: (?<name>pattern), мұндағы pattern - бұл тұрақты өрнек, ал name - бұл карман аты.

Күнтізбелік күн үшін біздің тұрақты өрнекті атаулы кармандар арқылы қайта жазайық:

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

Нәтижесінде бізде ассоциативті массаiv пайда болады, онда кілттері карман атаулары болады, ал мәндері - оларға түскен нәрсе:

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

Шын мәнінде, нәтиже массаivінде кармандардың мәндері ат бойынша да, реттік нөмірі бойынша да қолжетімді болады. Яғни, мысалы, жыл 'year' кілті бойынша және 1 нөмірі бойынша қолжетімді болады, ай - 'month' кілті бойынша және 2 нөмірі бойынша және т.с.с.:

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

Сипатталған атаулы кармандардың тағы бірнеше балама синтаксистері бар: (?P<name>pattern) және (?'name'pattern).

Задание 1

Уақыт жолы берілген:

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

Сағаттарды, минуттарды және секундтарды жеке атаулы кармандарға салыңыз.

Задание 2

Нәтиже массаivінде барлық нөмірленген кармандарды жойып, тек атаулы кармандарды қалдыратын функция жазыңыз.