⊗ppPmRgCPN 257 of 447 menu

PHP Regular Ifodalarida Umumiy Karmon Raqamlari

Quyidagi vaziyatni ko'rib chiqaylik. Faraz qilaylik, bizda o'zgaruvchi bor, uning yili 1990 dan 2099 gacha o'zgarishi mumkin. Faraz qilaylik, biz yilning oxirgi ikkita raqamini karmonga olishni xohlaymiz. Tegishli regular ifodani yozamiz:

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

Biroq, bu yerda bizni bir noqulaylik kutmoqda. Gap shundaki, o'tgan asr yillari uchun ikkita raqam birinchi karmonga tushadi, ammo ikkinchi asr yillari uchun - ikkinchisiga. Keling, misollar orqali ko'rib chiqaylik.

Mana birinchi variant:

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

Mana ikkinchi variant:

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

Endi faraz qilaylik, biz topilgan yil raqamlarini o'zgaruvchiga yozmoqchimiz. Bizni muammo kutmoqda, chunki biz karmondan ma'lumotlarni qaysi kalit bilan olishimiz anig emas:

<?php $year = $res[1]; // 1 yoki 2 kalit kerak ?>

Muammoni shart orqali hal qilish mumkin:

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

Biroq, soddaroq yechim mavjud. Maxsus (?| ) komandasidan foydalanish mumkin. Uning ichidagi barcha karmonlar bitta raqamga ega bo'ladi.

Keling, bizning regular ifodamizni tuzatamiz

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

Va endi bizning yilimiz aniq bir raqamli karmonda bo'ladi:

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

Sanalar bilan berilgan satrlar, ulardagi yil 1990 dan 2099 gacha o'zgarishi mumkin:

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

Har bir sana uchun kunni birinchi karmonga, oyni ikkinchisiga, yilning oxirgi ikkita raqamini esa uchinchisiga qo'ying.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish