Zakken bij vervanging via regex in PHP
Bij het werken met de functie preg_replace,
als we iets in een zak in de regex stoppen,
dan kunnen we in de vervangingsreeks de inhoud
van deze zak invoegen door een dollarteken $ en het nummer
van de zak te schrijven. Bijvoorbeeld, $0 - nulde zak,
$1 - eerste zak, $2 - tweede
zak en zo verder.
Laten we eens kijken waar dit voor nodig is en hoe je het kunt gebruiken aan de hand van voorbeelden.
Voorbeeld
Laten we alle getallen zoeken en in plaats daarvan dezezelfde getallen invoegen, maar dan tussen accolades. Hiervoor zullen we alle gevonden getallen vervangen door zichzelf, maar tussen accolades:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'{1} {23} {456} xax'
Voorbeeld
Laten we alle strings zoeken die
getallen voorstellen met x-en rondom en deze
getallen vervangen door zichzelf, maar met '!' tekens eromheen:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'!1! !23! !456! xax'
Voorbeeld
Laten we de volgende taak oplossen: er zijn strings
van het formaat 'aaa@bbb' - letters, dan een apenstaartje,
dan letters. Het is nodig om de letters
voor '@' en na om te wisselen. Laten we dit implementeren:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'bbb@aaa ddd@ccc'
Praktische taken
Gegeven een string:
<?php
$str = '12 34 56 78';
?>
Wissel de cijfers in alle tweecijferige getallen om.
Gegeven een string met een datum:
<?php
$str = '31.12.2025';
?>
Converteer deze datum naar '2025.12.31'.