⊗ppPmRgNP 255 of 447 menu

Pomenované zachytávacie skupiny v regulárnych výrazoch PHP

Povedzme, že pomocou preg_match chceme rozdeliť dátum na deň, mesiac a rok. Použime na to zachytávacie skupiny:

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

Ako vidíte, vo výsledku dostaneme pole, v ktorom v nultom prvku bude celý dátum, v prvom - rok, v druhom - mesiac, v treťom - deň.

Niekedy by však bolo vhodné získať obsah zachytávacích skupín vo forme asociatívneho poľa. To znamená, že v našom prípade by bolo fajn získať takéto pole:

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

Na to v regulárnych výrazoch existuje špeciálna syntax. Tu je: (?<name>pattern), kde pattern - je regulárny výraz, a name - je názov zachytávacej skupiny.

Prepíšme náš regulárny výraz pre dátum pomocou pomenovaných zachytávacích skupín:

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

Výsledkom bude asociatívne pole, v ktorom kľúče budú mená zachytávacích skupín, a hodnoty - to, čo sa do nich dostalo:

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

V skutočnosti budú hodnoty zachytávacích skupín v poli s výsledkom dostupné ako podľa mena, tak a podľa poradového čísla. To znamená, že napríklad rok bude dostupný pod kľúčom 'year' a pod číslom 1, mesiac - pod kľúčom 'month' a pod číslom 2 a tak ďalej:

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

Opísané pomenované zachytávacie skupiny majú ešte niekoľko alternatívnych syntaxí: (?P<name>pattern) a (?'name'pattern).

Daný reťazec s časom:

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

Uložte hodiny, minúty a sekundy do samostatných pomenovaných zachytávacích skupín.

Napíšte funkciu, ktorá v poli s výsledkom odstráni všetky číslované zachytávacie skupiny, pričom ponechá iba pomenované.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť