Кармани при замени преко регуларних израза у PHP-у
При раду са функцијом preg_replace,
ако нешто ставимо у карман у регуларном изразу,
онда у низу за замену можемо уметнути садржај
тог кармана писањем знака долара $ и броја
кармана. На пример, $0 - нулти карман,
$1 - први карман, $2 - други
карман и тако даље.
Зашто је то потребно и како се тим користи, хајде да погледамо на примерима.
Пример
Хајде да нађемо све бројеве и уместо њих убацимо исте те бројеве, али у витичастим заградама. За ово све нађене бројеве ћемо заменити на њих саме, али у витичастим заградама:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'{1} {23} {456} xax'
Пример
Хајде да нађемо све низове који представљају
бројеве са 'x'-евима око њих и заменимо те
бројеве њима самима, али са '!' знацима око:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'!1! !23! !456! xax'
Пример
Хајде да решимо следећи задатак: дати су низови
облика 'aaa@bbb' - слова, па мајмунче,
па слова. Потребно је заменити места словама
пре '@' и после. Имплементирајмо:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Као резултат у променљиву ће бити уписано следеће:
'bbb@aaa ddd@ccc'
Практични задаци
Дат је низ:
<?php
$str = '12 34 56 78';
?>
Замените места цифрама у свим двоцифреним бројевима.
Дат је низ са датумом:
<?php
$str = '31.12.2025';
?>
Трансформишите овај датум у '2025.12.31'.