# Карманы при замене через регулярки на 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'`.

← →
↑