⊗ppPmRgCPN 257 of 447 menu

Totalt antall lommer i regex i PHP

La oss vurdere følgende situasjon. Anta at vi har en variabel med et år som kan variere fra 1990 til 2099. Anta at vi ønsker å få de to siste sifrene i året i en lomme. La oss skrive det tilsvarende regulære uttrykket:

<?php $reg = '#19(9\d)|20(\d\d)#'; ?>

Her venter imidlertid en ulempe på oss. Saken er at for årene i forrige århundre vil de to sifrene havne i den første lommen, mens for årene i det andre århundret - i den andre. La oss se på eksempler.

Her er det første alternativet:

<?php $str = '1991'; preg_match($reg, $str, $res); var_dump($res); // [1 => '91'] ?>

Og her er det andre alternativet:

<?php $str = '2021'; preg_match($reg, $str, $res); var_dump($res); // [2 => '21'] ?>

Anta nå at vi ønsker å skrive de funnet årets sifrer inn i en variabel. Vi står overfor et problem, for vi vet ikke nøyaktig med hvilken nøkkel vi skal hente dataene fra lommen:

<?php $year = $res[1]; // trenger nøkkel enten 1 eller 2 ?>

Problemet kan løses med en betingelse:

<?php if (!empty($res[1])){ $year = $res[1]; } else{ $year = $res[2]; } ?>

Det finnes imidlertid en enklere løsning. Du kan bruke en spesiell kommando (?| ). Alle lommer som er innenfor den vil ha ett nummer.

La oss korrigere vårt regulære uttrykk

<?php $reg = '#(?|19(9\d)|20(\d\d))#'; ?>

Og nå vil året vårt definitivt være i lommen med nummer én:

<?php $year = $res[1]; ?>

Det gis strenger med datoer, der året kan variere fra 1990 til 2099:

<?php $arr = [ '31-12-2025', '30-11-1995', '29-10-1990', ]; ?>

For hver dato, legg dagen i den første lommen, måneden i den andre, og de to siste sifrene i året - i den tredje.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis