Lommer ved udskiftning med regulære udtryk i PHP
Når du arbejder med funktionen preg_replace,
hvis vi lægger noget i en lomme i det regulære udtryk,
så kan vi i erstatningsstrengen indsætte indholdet
af denne lomme ved at skrive dollartegnet $ og
lommens nummer. For eksempel, $0 - den nulte lomme,
$1 - den første lomme, $2 - den anden
lomme og så videre.
Lad os se på eksempler for at forstå, hvad dette bruges til og hvordan man bruger det.
Eksempel
Lad os finde alle tal og erstatte dem med de samme tal, men omgivet af krøllede parenteser. For at gøre dette vil vi erstatte alle de fundne tal med dem selv, men i krøllede parenteser:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Resultatet i variablen vil være følgende:
'{1} {23} {456} xax'
Eksempel
Lad os finde alle strenge, der repræsenterer
tal omgivet af 'x'er og erstatte disse
tal med dem selv, men omgivet af '!' tegn:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Resultatet i variablen vil være følgende:
'!1! !23! !456! xax'
Eksempel
Lad os løse følgende opgave: der er givet strenge
af typen 'aaa@bbb' - bogstaver, så et @-tegn,
så bogstaver. Vi skal bytte om på bogstaverne
før '@' og efter. Lad os implementere det:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Resultatet i variablen vil være følgende:
'bbb@aaa ddd@ccc'
Praktiske opgaver
Der er givet en streng:
<?php
$str = '12 34 56 78';
?>
Bytt om på cifrene i alle tocifrede tal.
Der er givet en streng med en dato:
<?php
$str = '31.12.2025';
?>
Konverter denne dato til '2025.12.31'.