⊗ppPmRgCPN 257 of 447 menu

Bendras kišenių numeris PHP reguliariosiose išraiškose

Panagrinėkime tokią situaciją. Tarkime, kad turime kintamąjį su metais, kurie gali kisti nuo 1990 iki 2099. Tarkime, kad norime gauti paskutinius du metų skaitmenis į kišenę. Parašykime atitinkamą reguliariąją išraišką:

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

Tačiau čia mūsų laukia vienas nepatogumas. Faktas yra tas, kad praėjusio amžiaus metams du skaitmenys pateks į pirmą kišenę, o antro amžiaus metams - į antrą. Pažiūrėkime pavyzdžiais.

Štai pirmas variantas:

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

O štai antras variantas:

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

Tarkime, kad dabar norime rastus metų skaitmenis įrašyti į kintamąjį. Mūsų laukia problema, nes mes tiksliai nežinome, su kokiu raktu paimti duomenis iš kišenės:

<?php $year = $res[1]; // reikia raktą 1 arba 2 ?>

Problemą galima išspręsti naudojant sąlygą:

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

Tačiau yra paprastesnis sprendimas. Galima naudoti specialią komandą (?| ). Visos kišenės, kurios yra jos viduje, turės tą patį numerį.

Pataisykime mūsų reguliariąją išraišką

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

Ir dabar mūsų metai tikrai bus kišenėje su numeriu vienas:

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

Duotos eilutės su datomis, kuriose metai gali kisti nuo 1990 iki 2099:

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

Kiekvienai datai įdėkite dieną į pirmą kišenę, mėnesį į antrą, o paskutinius du metų skaitmenis - į trečią.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti