Džepovi u zameni preko regularnih izraza u PHP-u

Prilikom rada sa funkcijom preg_replace, ako nešto stavimo u džep u regularnom izrazu, onda u stringu za zamenu možemo umetnuti sadržaj tog džepa tako što napišemo znak dolara $ i broj džepa. Na primer, $0 - nulti džep, $1 - prvi džep, $2 - drugi džep i tako dalje.

Zašto je ovo potrebno i kako se koristiti time hajde da pogledamo na primerima.

Primer

Hajde da pronađemo sve brojeve i umesto njih umetnemo te iste brojeve, ali u vitičastim zagradama. Za ovo sve pronađene brojeve ćemo zameniti njima samima, ali u vitičastim zagradama:

php<?php
  $str = '1 23 456 xax';
  $res = preg_replace('#(\d+)#', '{$1}', $str);
?>

Kao rezultat u promenljivu će biti upisano sledeće:

php'{1} {23} {456} xax'

Primer

Hajde da pronađemo sve stringove koji predstavljaju brojeve sa iksom oko sebe i zamenimo te brojeve njima samima, ali sa '!' znacima oko sebe:

php<?php
  $str = 'x1x x23x x456x xax';
  $res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>

Kao rezultat u promenljivu će biti upisano sledeće:

php'!1! !23! !456! xax'

Primer

Hajde da rešimo sledeći zadatak: dati su stringovi oblika 'aaa@bbb' - slova, pa znak '@', pa slova. Potrebno je zameniti mesta slovima pre '@' i posle. Realizujmo:

php<?php
  $str = 'aaa@bbb ccc@ddd';
  $res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>

Kao rezultat u promenljivu će biti upisano sledeće:

php'bbb@aaa ddd@ccc'

Praktični zadaci

Задание 1

Dat je string:

php<?php
  $str = '12 34 56 78';
?>

Zamenite mesta ciframa u svim dvocifrenim brojevima.

Задание 2

Dat je string sa datumom:

php<?php
  $str = '31.12.2025';
?>

Transformišite ovaj datum u '2025.12.31'.