Kabatas aizstāšanā ar regulārajām izteiksmēm PHP
Strādājot ar funkciju preg_replace,
ja mēs kaut ko ievietojam kabatā regulārajā izteiksmē,
tad aizstāšanas virknē mēs varam ievietot šīs
kabatas saturu, ierakstot dolāra zīmi $ un kabatas
numuru. Piemēram, $0 - nulles kabata,
$1 - pirmā kabata, $2 - otrā
kabata un tā tālāk.
Kāpēc tas ir vajadzīgs un kā to lietot, apskatīsim ar piemēriem.
Piemērs
Atradīsim visus skaitļus un to vietā ievietosim tos pašus skaitļus, bet cirtainajās iekavās. Lai to izdarītu, visus atrastos skaitļus mēs aizstāsim ar pašiem sevi, bet cirtainajās iekavās:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'{1} {23} {456} xax'
Piemērs
Atradīsim visas virknes, kas pārstāv
skaitļus ar x apkārt un aizstāsim šos
skaitļus ar pašiem sevi, bet ar '!' zīmēm apkārt:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'!1! !23! !456! xax'
Piemērs
Atrisināsim sekojošu uzdevumu: dotas virknes
veida 'aaa@bbb' - burti, tad @ zīme,
tad burti. Jāsamaina vietām burti
pirms '@' un pēc. Realizēsim:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Rezultātā mainīgajā tiks ierakstīts sekojošais:
'bbb@aaa ddd@ccc'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = '12 34 56 78';
?>
Samainiet vietām ciparus visos divciparu skaitļos.
Dota virkne ar datumu:
<?php
$str = '31.12.2025';
?>
Pārveidojiet šo datumu formātā '2025.12.31'.