Xhepat në zëvendësim përmes regex në PHP
Gjatë punës me funksionin preg_replace,
nëse vendosim diçka në xhepin në regex,
atëherë në vargun e zëvendësimit mund të fusim përmbajtjen
e këtij xhepi duke shkruar shenjën e dollarit $ dhe numrin
e xhepit. Për shembull, $0 - xhepi zero,
$1 - xhepi i parë, $2 - xhepi i dytë
e kështu me radhë.
Për çfarë është e nevojshme kjo dhe si ta përdorim le ta shohim me shembuj.
Shembull
Le të gjejmë të gjithë numrat dhe në vend të tyre të fusim të njëjtët numra, por në kllapa kaçurrelë. Për këtë të gjithë numrat e gjetur do t'i zëvendësojmë me ata vetë, por në kllapa kaçurrelë:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Si rezultat në ndryshoren do të shkruhet si më poshtë:
'{1} {23} {456} xax'
Shembull
Le të gjejmë të gjithë vargjet që përfaqësojnë
numra me ikse rreth e qark dhe t'i zëvendësojmë këta
numra me ata vetë, por me shenja '!' përreth:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Si rezultat në ndryshoren do të shkruhet si më poshtë:
'!1! !23! !456! xax'
Shembull
Le të zgjidhim problemin e mëposhtëm: jepen vargjet
të formës 'aaa@bbb' - shkronja, pastaj shenja @,
pastaj shkronja. Duhet të ndërrohen vendet shkronjat
përpara '@' dhe pas. Le ta realizojmë:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Si rezultat në ndryshoren do të shkruhet si më poshtë:
'bbb@aaa ddd@ccc'
Detyra praktike
Është dhënë vargu:
<?php
$str = '12 34 56 78';
?>
Ndrroni vendet e shifrave në të gjithë numrat dyshifrorë.
Është dhënë vargu me datë:
<?php
$str = '31.12.2025';
?>
Shndërrojeni këtë datë në '2025.12.31'.