⊗ppPmRgCPN 257 of 447 menu

PHP регулярдык туюнтмаларындагы кармандардын жалпы номери

Төмөнкү жagдайды карап көрөлү. Бизде өзгөрүп турган жыл өзгөрмөсү бар дейли, ал 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हिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу