⊗ppPmRgCPN 257 of 447 menu

Ընդհանուր համարի գրպանները PHP-ի կանոնավոր արտահայտություններում

Դիտարկենք հետևյալ իրավիճակը. Ենթադրենք ունենք տարվա հետ կապված փոփոխական, որը կարող է փոխվել 1990-ից մինչև 2099: Ենթադրենք, մենք ցանկանում ենք ստանալ տարվա վերջին երկու թվանշանները գրպանում: Գրենք համապատասխան կանոնավոր արտահայտություն.

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

Սակայն, այստեղ մեզ սպասվում է մի անհարմարություն: Բանը նրանում է, որ անցյալ դարի տարիների համար երկու թվանշանը կընկնի առաջին գրպանը, իսկ երկրորդ դարի տարիների համար՝ երկրորդը: Դիտարկենք օրինակներով:

Ահա առաջին տարբերակը.

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

Իսկ ահա երկրորդ տարբերակը.

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

Ենթադրենք հիմա, որ մենք ցանկանում ենք գտնված տարվա թվանշանները գրել փոփոխականի մեջ: Մեզ սպասվում է խնդիր, քանի որ մենք հստակ չգիտենք, թե որ բանալիով վերցնել տվյալները գրպանից.

<?php $year = $res[1]; // պետք է բանալին՝ 1 կամ 2 ?>

Խնդիրը կարելի է լուծել պայմանի միջոցով.

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

Սակայն, կա ավելի պարզ լուծում: Կարելի է օգտագործել հատուկ հրաման (?| ): Դրա ներսում գտնվող բոլոր գրպանները կունենան նույն համարը:

Ուղղենք մեր կանոնավոր արտահայտությունը

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

Եվ այժմ մեր տարին հաստատ կլինի մեկ համարով գրպանում.

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

Տրված են ամսաթիվ պարունակող տողեր, որոնցում տարին կարող է փոխվել 1990-ից մինչև 2099.

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

Յուրաքանչյուր ամսաթվի համար տեղադրեք օրը առաջին գրպանում, ամիսը՝ երկրորդում, իսկ տարվա վերջին երկու թվանշանները երրորդում:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել