⊗ppPmRgNP 255 of 447 menu

Imenovani capture grupe (karmani) u PHP regularnim izrazima

Recimo da pomoću preg_match želimo podeliti datum na dan, mesec i godinu. Koristićemo za ovo capture grupe (karmane):

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

Kao što vidite, kao rezultat dobijamo niz, u kojem će na nultom elementu biti ceo datum, na prvom - godina, na drugom - mesec, na trećem - dan.

Ponekad, međutim, bilo bi zgodno dobiti sadržaj capture grupa (karmana) kao asocijativni niz. To jest u našem slučaju bilo bi lepo dobiti ovakav niz:

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

Za ovo u regularnim izrazima postoji specijalna sintaksa. Evo je: (?<name>pattern), gde je pattern - regularni izraz, a name - ime capture grupe (karmana).

Hajde da prepišemo naš regularni izraz za datum preko imenovanih capture grupa (karmana):

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

Kao rezultat ćemo dobiti asocijativni niz, u kojem će ključevi biti imena capture grupa (karmana), a vrednosti - ono što je u njih upalo:

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

U stvari, u nizu sa rezultatom vrednosti capture grupa (karmana) će biti dostupne i po imenu, i po rednom broju. To jest, na primer, godina će biti dostupna po ključu 'year' i po broju 1, mesec - po ključu 'month' i po broju 2 i tako dalje:

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

Opisane imenovane capture grupe (karmani) imaju još nekoliko alternativnih sintaksi: (?P<name>pattern) i (?'name'pattern).

Dat je string sa vremenom:

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

Stavite sate, minute i sekunde u zasebne imenovane capture grupe (karmane).

Napišite funkciju koja u nizu sa rezultatom obriše sve numerisane capture grupe (karmane), ostavivši samo imenovane.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij