Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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