Кішэні пры замене праз рэгуляркі на PHP

Пры працы з функцыяй preg_replace, калі мы штосьці пакладзем у кішэню ў рэгулярцы, то ў радку замены мы можам уставіць змесціва гэтага кішэні напісаўшы знак долара $ і нумар кішэні. Напрыклад, $0 - нулявы кішэнь, $1 - першы кішэнь, $2 - другі кішэнь і гэтак далей.

Навошта гэта трэба і як гэтым карыстацца давайце паглядзім на прыкладах.

Прыклад

Давайце знойдзем усе лікі і замест іх уставім гэтыя ж лікі, але ў фігурных дужках. Для гэтага ўсе знойдзеныя лікі мы будзем заменяць на іх саміх ж, але ў фігурных дужках:

php<?php
  $str = '1 23 456 xax';
  $res = preg_replace('#(\d+)#', '{$1}', $str);
?>

У выніку ў зменную запишацца наступнае:

php'{1} {23} {456} xax'

Прыклад

Давайце знойдзем усе радкі, якія прадстаўляюць сабой лікі з іксамі вакол і заменім гэтыя лікі на іх ж, але з '!' знакамі вакол:

php<?php
  $str = 'x1x x23x x456x xax';
  $res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>

У выніку ў зменную запишацца наступнае:

php'!1! !23! !456! xax'

Прыклад

Давайце вырашым наступную задачу: дадзеныя радкі выгляду 'aaa@bbb' - літары, потым сабака, потым літары. Трэба памяняць месцамі літары да '@' і пасля. Рэалізуем:

php<?php
  $str = 'aaa@bbb ccc@ddd';
  $res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>

У выніку ў зменную запишацца наступнае:

php'bbb@aaa ddd@ccc'

Практычныя задачы

Задание 1

Дадзены радок:

php<?php
  $str = '12 34 56 78';
?>

Памяняйце месцамі лічбы ва ўсіх двухзначных ліках.

Задание 2

Дадзены радок з датай:

php<?php
  $str = '31.12.2025';
?>

Пераўтварыце гэтую дату ў '2025.12.31'.