Xhepa me Emra në Regex në PHP

Le të supozojmë se duke përdorur preg_match duam të ndajmë një datë në ditë, muaj dhe vit. Le të përdorim xhepa për këtë:

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

Siç e shihni, si rezultat marrim një array, ku në elementin zero do të jetë e gjithë data, në të parën - viti, në të dytën - muaji, në të tretën - dita.

Megjithatë, nganjëherë do të ishte i përshtatshëm të merrnim përmbajtjen e xhepave në formën e një array asociativ. Kjo do të thotë, në rastin tonë do të ishte mirë të merrnim një array si ky:

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

Për këtë, në regex ekziston një sintaksë e veçantë. Kjo është ajo: (?<name>pattern), ku pattern - është regex, dhe name - është emri i xhepit.

Le të rishkruajmë regex-in tonë për datën duke përdorur xhepa me emra:

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

Si rezultat, do të kemi një array asociativ ku çelësat do të jenë emrat e xhepave, dhe vlerat - ajo që u kap në to:

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

Në fakt, në array me rezultat, vlerat e xhepave do të jenë të disponueshme si sipas emrit, ashtu edhe sipas numrit rendor. Kjo do të thotë, për shembull, viti do të jetë i disponueshëm me çelësin 'year' dhe me numrin 1, muaji - me çelësin 'month' dhe me numrin 2 e kështu me radhë:

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

Xhepat e emërtuar të përshkruar kanë edhe disa sintaksa alternative: (?P<name>pattern) dhe (?'name'pattern).

Задание 1

Jepet një varg me kohë:

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

Vendosni orët, minutat dhe sekondat në xhepa të veçantë me emra.

Задание 2

Shkruani një funksion që në array me rezultat fshin të gjitha xhepat e numëruar, duke lënë vetëm ata me emra.