Кішэні пры замене праз рэгуляркі на 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'.