При работе с функцией 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'
.