⊗ppPmRgCPN 257 of 447 menu

Kopējais numuru kabatu regulārajās izteiksmēs PHP

Apskatīsim šādu situāciju. Pieņemsim, ka mums ir mainīgais ar gadu, kas var mainīties no 1990 līdz 2099. Pieņemsim, ka mēs vēlamies iegūt pēdējos divus ciparus gada kabatā. Uzrakstīsim atbilstošu regulāro izteiksmi:

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

Tomēr šeit mūs sagaida viena neērtība. Lieta ir tāda, ka pagājušā gadsimta gadiem divi cipari nonāks pirmajā kabatā, bet otrā gadsimta gadiem - otrajā. Apskatīsim ar piemēriem.

Lūk, pirmais variants:

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

Un lūk, otrais variants:

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

Pieņemsim, ka mēs tagad vēlamies ierakstīt atrastos gada ciparus mainīgajā. Mūs sagaida problēma, jo mēs nezinām precīzi, ar kuru atslēgu paņemt datus no kabatas:

<?php $year = $res[1]; // nepieciešama atslēga 1 vai 2 ?>

Problēmu var atrisināt ar nosacījumu:

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

Tomēr ir vienkāršāks risinājums. Var izmantot īpašo komandu (?| ). Visas kabatas, kas atrodas tajā iekšpusē, būs ar vienu numuru.

Izlabosim mūsu regulāro izteiksmi

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

Un tagad mūsu gads noteikti būs kabatā ar numuru viens:

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

Dotas virknes ar datumiem, kuros gads var mainīties no 1990 līdz 2099:

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

Katram datumam ievietojiet dienu pirmajā kabatā, mēnesi otrajā, bet pēdējos divus gada ciparus - trešajā.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt