⊗ppPmRgNP 255 of 447 menu

Poimenovani zajeti v regularnih izrazih PHP

Recimo, da želimo z preg_match razbiti datum na dan, mesec in leto. Uporabimo za to zajete:

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

Kot vidite, kot rezultat dobimo matriko, v kateri bo na ničelnem elementu celoten datum, na prvem - leto, na drugem - mesec, na tretjem - dan.

Včasih pa bi bilo priročno dobiti vsebino zajetih kot asociativno matriko. Se prav v našem primeru bi bilo dobro dobiti takšno matriko:

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

Za to v regularnih izrazih obstaja posebna sintaksa. Tukaj je: (?<name>pattern), kjer je pattern - regularni izraz, name pa je ime zajeta.

Prepišimo naš regularni izraz za datum z uporabo poimenovanih zajetov:

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

Kot rezultat bomo dobili asociativno matriko, v kateri bodo ključi imena zajetov, vrednosti pa - kar se je ujelo vanje:

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

Pravzaprav bodo v matriki z rezultatom vrednosti zajetov dostopne tako po imenu kot po zaporedni številki. Se pravi, na primer, leto bo dostopno po ključu 'year' in po številki 1, mesec - po ključu 'month' in po številki 2 in tako naprej:

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

Opisani poimenovani zajeti imajo še nekaj alternativnih sintaks: (?P<name>pattern) in (?'name'pattern).

Podan je niz s časom:

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

Postavite ure, minute in sekunde v ločene poimenovane zajete.

Napišite funkcijo, ki bo v matriki z rezultatom izbrisala vsa oštevilčena zajeta, pustila pa samo poimenovana.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni