Nimetatud taskid PHP regulaaravaldistes

Oletame, et tahame kasutada preg_match kuupäeva jagamiseks päevaks, kuuks ja aastaks. Kasutame selleks taske:

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

Nagu näete, saame tulemusena massiivi, milles nullindal elemendil on kogu kuupäev, esimesel - aasta, teisel - kuu, kolmandal - päev.

Mõnikord oleks aga mugav saada taskide sisu assotsiatiivse massiivi kujul. See tähendab meie puhul oleks tore saada järgmine massiiv:

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

Selleks on regulaaravaldistes spetsiaalne süntaks. See on: (?<name>pattern), kus pattern - on regulaaravaldis ja name - on taski nimi.

Kirjutame oma kuupäeva regulaaravaldise ümber kasutades nimetatud taskid:

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

Tulemusena saame assotsiatiivse massiivi, milles võtmeteks on taskide nimed ja väärtusteks - see, mis nende sattus:

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

Tegelikult on tulemuste massiivis taskide väärtused kättesaadavad nii nime kui ka järjekorranumbri järgi. See tähendab, näiteks aasta on kättesaadav võtme 'year' ja numbri 1 järgi, kuu - võtme 'month' ja numbri 2 järgi jne:

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

Kirjeldatud nimetatud taskidel on veel mõned alternatiivsed süntaksid: (?P<name>pattern) ja (?'name'pattern).

Задание 1

Antud on string ajaga:

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

Pange tunnid, minutid ja sekundid eraldi nimetatud taskidesse.

Задание 2

Kirjutage funktsioon, mis kustutab tulemuste massiivist kõik nummerdatud taskid, jättes alles ainult nimetatud taskid.