Žepi pri zamenjavi z regularnimi izrazi v PHP-ju
Pri delu s funkcijo preg_replace,
če kaj damo v žep v regularnem izrazu,
lahko v nizu za zamenjavo vstavimo vsebino
tega žepa tako, da napišemo znak dolarja $ in številko
žepa. Na primer, $0 - ničti žep,
$1 - prvi žep, $2 - drugi
žep in tako naprej.
Zakaj je to potrebno in kako se tega uporablja, poglejmo na primerih.
Primer
Poiščimo vse številke in namesto njih vstavimo iste številke, vendar v zavitih oklepajih. Za to bomo vse najdene številke zamenjali z nimi samimi, vendar v zavitih oklepajih:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'{1} {23} {456} xax'
Primer
Poiščimo vse nize, ki predstavljajo
številke z iksi okoli in zamenjajmo te
številke z njimi samimi, vendar z '!' znaki okoli:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'!1! !23! !456! xax'
Primer
Rešimo naslednjo nalogo: dani so nizi
oblike 'aaa@bbb' - črke, nato znak @,
nato črke. Zamenjati je treba mesta črk
pred '@' in za njim. Implementirajmo:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'bbb@aaa ddd@ccc'
Praktične naloge
Dan je niz:
<?php
$str = '12 34 56 78';
?>
Zamenjajte mesta števk v vseh dvomestnih številkah.
Dan je niz z datumom:
<?php
$str = '31.12.2025';
?>
Pretvorite ta datum v '2025.12.31'.