Кармани при замена со регуларни изрази во PHP
При работа со функцијата preg_replace,
ако нешто го ставиме во карман во регуларниот израз,
тогаш во низата за замена можеме да го вметнеме содржината
на тој карман со пишување на знакот долар $ и бројот
на карманот. На пример, $0 - нулти карман,
$1 - прв карман, $2 - втор
карман и така натаму.
Зошто ова е потребно и како да се користи, ајде да погледнеме на примери.
Пример
Ајде да ги најдеме сите броеви и наместо нив да вметнеме истите тие броеви, но во големи загради. За ова сите пронајдени броеви ќе ги замениме со нив самите, но во големи загради:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Како резултат во променливата ќе се запише следново:
'{1} {23} {456} xax'
Пример
Ајде да ги најдеме сите низи кои претставуваат
броеви со иксови околу и да ги замениме овие
броеви со нив самите, но со '!' знаци околу:
<?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'.