⊗ppPmRgNP 255 of 447 menu

Nimettyjen sieppausryhmien PHP:ssä

Oletetaan, että haluamme preg_match:n avulla jakaa päivämäärän päiväksi, kuukaudeksi ja vuodeksi. Käytämme siihen sieppausryhmiä:

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

Kuten näette, tuloksena saamme taulukon, jossa nollannessa elementissä on koko päivämäärä, ensimmäisessä - vuosi, toisessa - kuukausi, kolmannessa - päivä.

Toisinaan olisi kuitenkin kätevää saada sieppausryhmien sisältö assosiatiivisena taulukkona. Eli meidän tapauksessamme olisi mukavaa saada tällainen taulukko:

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

Tätä varten säännöllisissä lausekkeissa on olemassa erityinen syntaksi. Tässä se on: (?<name>pattern), missä pattern on säännöllinen lauseke ja name on sieppausryhmän nimi.

Kirjoitetaan päivämäärän säännöllinen lauseke uudelleen nimetyillä sieppausryhmillä:

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

Tuloksena saamme assosiatiivisen taulukon, jossa avaimina ovat sieppausryhmien nimet, ja arvoina - niihin osuneet sisällöt:

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

Itse asiassa tulostaulukossa sieppausryhmien arvot ovat saatavilla sekä nimellä että järjestysnumeron mukaan. Eli esimerkiksi vuosi on saatavilla avaimella 'year' ja numerolla 1, kuukausi - avaimella 'month' ja numerolla 2 ja niin edelleen:

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

Kuvatuilla nimetyillä sieppausryhmillä on vielä muutama vaihtoehtoinen syntaksi: (?P<name>pattern) ja (?'name'pattern).

Annettu merkkijono, jossa on kellonaika:

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

Sijoita tunnit, minuutit ja sekunnit erillisiin nimitettyihin sieppausryhmiin.

Kirjoita funktio, joka poistaa tulostaulukosta kaikki numeroitujen sieppausryhmät, jättäen vain nimetyt.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää