Taschen bei Ersetzungen mit regulären Ausdrücken in PHP
Bei der Arbeit mit der Funktion preg_replace,
wenn wir etwas in eine Tasche im regulären Ausdruck stecken,
können wir in der Ersetzungszeichenkette den Inhalt
dieser Tasche einfügen, indem wir das Dollarzeichen $ und die Nummer
der Tasche schreiben. Zum Beispiel, $0 - die nullte Tasche,
$1 - die erste Tasche, $2 - die zweite
Tasche und so weiter.
Wofür das nützlich ist und wie man es verwendet, schauen wir uns an Beispielen an.
Beispiel
Lasst uns alle Zahlen finden und an ihrer Stelle dieselben Zahlen, aber in geschweiften Klammern, einfügen. Dazu werden wir alle gefundenen Zahlen ersetzen durch sich selbst, aber in geschweiften Klammern:
<?php
$str = '1 23 456 xax';
$res = preg_replace('#(\d+)#', '{$1}', $str);
?>
Als Ergebnis wird in die Variable folgendes geschrieben:
'{1} {23} {456} xax'
Beispiel
Lasst uns alle Zeichenketten finden, die
Zahlen mit umgebenden 'x' darstellen und diese
Zahlen durch sich selbst ersetzen, aber mit '!' Zeichen umgeben:
<?php
$str = 'x1x x23x x456x xax';
$res = preg_replace('#x(\d+)x#', '!$1!', $str);
?>
Als Ergebnis wird in die Variable folgendes geschrieben:
'!1! !23! !456! xax'
Beispiel
Lasst uns die folgende Aufgabe lösen: es gibt Zeichenketten
der Form 'aaa@bbb' - Buchstaben, dann ein At-Zeichen,
dann Buchstaben. Wir müssen die Buchstaben
vor '@' und danach vertauschen. Implementierung:
<?php
$str = 'aaa@bbb ccc@ddd';
$res = preg_replace('#([a-z]+)@([a-z]+)#', '$2@$1', $str);
?>
Als Ergebnis wird in die Variable folgendes geschrieben:
'bbb@aaa ddd@ccc'
Praktische Aufgaben
Gegeben ist eine Zeichenkette:
<?php
$str = '12 34 56 78';
?>
Vertauschen Sie die Ziffern in allen zweistelligen Zahlen.
Gegeben ist eine Zeichenkette mit einem Datum:
<?php
$str = '31.12.2025';
?>
Wandeln Sie dieses Datum in '2025.12.31' um.