⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј