Кармаҳо дар ивазкунӣ бо регуляриҳо дар PHP
Ҳангоми кор бо функсияи preg_replace,
агар чизеро ба карма дар регуляри бигузорем,
пас дар сатри ивазкунӣ мо метавонем мундариҷаи
ин кармаро бо навиштани аломати доллар $ ва рақами
карма гузорем. Масалан, $0 - кармаи нулӣ,
$1 - кармаи якум, $2 - кармаи дуюм
ва ҳамин тавр.
Барои чӣ лозим аст ва чӣ гуна аз он истифода барад, биёед ба мисолҳо нигарем.
Мисол
Биёед ҳамаи ададҳоро ёбем ва ба ҷои онҳо ҳамон ададҳоро, аммо дар қавсҳои каҷӣ гузорем. Барои ин ҳамаи ададҳои ёфташударо мо ба ҳудуди худ иваз мекунем, аммо дар қавсҳои каҷӣ:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Дар натиҷа ба тағирёбандаи зерин сабт мешавад:
'{1} {23} {456} xax'
Мисол
Биёед ҳамаи сатрҳоро, ки иборатанд
аз ададҳо бо 'x' дар атроф ёбем ва ин
ададҳоро ба ҳудуди худ иваз кунем, аммо бо аломатҳои '!' дар атроф:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Дар натиҷа ба тағирёбандаи зерин сабт мешавад:
'!1! !23! !456! xax'
Мисол
Биёед масъалаи зеринро ҳал кунем: сатрҳои
намуди 'aaa@bbb' дода шудаанд - ҳарфҳо, сипас аломати '@',
сипас ҳарфҳо. Лозим аст ҷойҳои ҳарфҳо
пеш аз '@' ва баъд аз он иваз карда шаванд. Амалӣ мекунем:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Дар натиҷа ба тағирёбандаи зерин сабт мешавад:
'bbb@aaa ddd@ccc'
Масъалаҳои амалӣ
Сатр дода шудааст:
<?php
$str = '12 34 56 78';
?>
Ҳамаи рақамҳоро дар ҳамаи ададҳои дурақама иваз кунед.
Сатр бо сана дода шудааст:
<?php
$str = '31.12.2025';
?>
Ин санаро ба намуди '2025.12.31' табдил диҳед.