Záchytné skupiny pri nahradzovaní pomocou regulárnych výrazov v PHP
Pri práci s funkciou preg_replace,
ak niečo umiestnime do zachytávacej skupiny v regulárnom výraze,
tak v reťazci pre nahradenie môžeme vložiť obsah
tejto skupiny napísaním znaku dolára $ a čísla
skupiny. Napríklad, $0 - nultá skupina,
$1 - prvá skupina, $2 - druhá
skupina a tak ďalej.
Načo je to potrebné a ako to použiť, pozrime sa na príkladoch.
Príklad
Nájdime všetky čísla a namiesto nich vložme tieto isté čísla, ale v zložených zátvorkách. Pre tento účel všetky nájdené čísla budeme nahradzovať ich samotnými, ale v zložených zátvorkách:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Výsledkom zapísaným do premennej bude:
'{1} {23} {456} xax'
Príklad
Nájdime všetky reťazce, ktoré predstavujú
čísla s 'x' okolo a nahraďme tieto
čísla ich samotnými, ale s '!' znakmi okolo:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Výsledkom zapísaným do premennej bude:
'!1! !23! !456! xax'
Príklad
Poďme vyriešiť nasledujúcu úlohu: dané sú reťazce
tvaru 'aaa@bbb' - písmená, potom zavináč,
potom písmená. Je potrebné vymeniť miesta písmenám
pred '@' a po. Realizujme to:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Výsledkom zapísaným do premennej bude:
'bbb@aaa ddd@ccc'
Praktické úlohy
Daný reťazec:
<?php
$str = '12 34 56 78';
?>
Vymeňte miesta čísliciam vo všetkých dvojciferných číslach.
Daný reťazec s dátumom:
<?php
$str = '31.12.2025';
?>
Preveďte tento dátum na '2025.12.31'.