Lommeboker i erstatning med regulære uttrykk i PHP

Ved arbeid med funksjonen preg_replace, hvis vi legger noe i en lommebok i det regulære uttrykket, kan vi i erstatningsteksten sette inn innholdet av denne lommeboken ved å skrive dollartegnet $ og nummeret på lommeboken. For eksempel, $0 - nullte lommebok, $1 - første lommebok, $2 - andre lommebok og så videre.

La oss se på eksempler for å forstå hvorfor dette er nyttig og hvordan man bruker det.

Eksempel

La oss finne alle tall og erstatte dem med de samme tallene, men inni krøllete parenteser. For å gjøre dette vil vi erstatte alle funnede tall med seg selv, men inni krøllete parenteser:

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

Resultatet i variabelen vil bli følgende:

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

Eksempel

La oss finne alle strenger som representerer tall omgitt av 'x' og erstatte disse tallene med seg selv, men omgitt av '!' tegn:

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

Resultatet i variabelen vil bli følgende:

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

Eksempel

La oss løse følgende oppgave: gitt strenger av typen 'aaa@bbb' - bokstaver, deretter krøllalfa, deretter bokstaver. Vi må bytte plass på bokstavene før '@' og etter. La oss implementere:

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

Resultatet i variabelen vil bli følgende:

php'bbb@aaa ddd@ccc'

Praktiske oppgaver

Задание 1

Gitt en streng:

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

Bytt om sifrene i alle to-sifrede tall.

Задание 2

Gitt en streng med en dato:

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

Konverter denne datoen til '2025.12.31'.