⊗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हिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა