Карманаларни PHPда регуляр алмаштириш орқали
preg_replace функциси билан ишлаганда,
агар биз регуляр ифодада бирор нарсани кармага қўйсак,
у ҳолда алмаштириш сатрида биз
ушбу карманинг мундарижасини
доллар белгиси $ ва карманинг
рақамини ёзиб қўйишимиз мумкин. Масалан, $0 - нол карман,
$1 - биринчи карман, $2 - иккинчи
карман ва ҳоказо.
Бу нима учун керак ва ундан қандай фойдаланиш кераклигини мисоллар орқали кўриб чиқайлик.
Мисол
Келинг, барча рақамларни топиш учун ва уларнинг ўрнига ўша рақамларни, лекин кавич ичида қўйиш учун. Бунинг учун топилган барча рақамларни биз ўзларининг ўрнига, лекин кавич ичида алмаштирамиз:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Натижада ўзгарувчига куйидагилар ёзилади:
'{1} {23} {456} xax'
Мисол
Келинг, атрофида икслар бўлган барча сатрларни
топамиз ва ушбу
рақамларни ўзларининг ўрнига, лекин атрофида '!' белгилари билан алмаштирамиз:
<?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' кўринишига ўзгартиринг.