Fickor vid ersättning med reguljära uttryck i PHP
När du arbetar med funktionen preg_replace,
om vi lägger något i en ficka i det reguljära uttrycket,
så kan vi i ersättningssträngen infoga innehållet
i denna ficka genom att skriva dollartecknet $ och numret
på fickan. Till exempel, $0 - nollte fickan,
$1 - första fickan, $2 - andra
fickan och så vidare.
Låt oss titta på exempel för att förstå varför detta är användbart och hur man använder det.
Exempel
Låt oss hitta alla tal och ersätta dem med samma tal, men inom klammerparenteser. För att göra detta kommer vi att ersätta alla hittade tal med sig själva, men inom klammerparenteser:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'{1} {23} {456} xax'
Exempel
Låt oss hitta alla strängar som
representerar tal med 'x' runt om och ersätta dessa
tal med sig själva, men omgivna av '!'-tecken:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'!1! !23! !456! xax'
Exempel
Låt oss lösa följande problem: det finns strängar
av typen 'aaa@bbb' - bokstäver, sedan ett @-tecken,
sedan bokstäver. Vi behöver byta plats på bokstäverna
före '@' och efter. Låt oss implementera:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'bbb@aaa ddd@ccc'
Praktiska uppgifter
Given en sträng:
<?php
$str = '12 34 56 78';
?>
Byt plats på siffrorna i alla tvåsiffriga tal.
Given en sträng med ett datum:
<?php
$str = '31.12.2025';
?>
Omvandla detta datum till '2025.12.31'.