⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј