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
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Resultatet i variabelen vil bli følgende:
'{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
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Resultatet i variabelen vil bli følgende:
'!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
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Resultatet i variabelen vil bli følgende:
'bbb@aaa ddd@ccc'
Praktiske oppgaver
Gitt en streng:
<?php
$str = '12 34 56 78';
?>
Bytt om sifrene i alle to-sifrede tall.
Gitt en streng med en dato:
<?php
$str = '31.12.2025';
?>
Konverter denne datoen til '2025.12.31'.