Durchsucht Zeichenkette
nach Übereinstimmungen mit
Suchmuster
und ersetzt sie mit
Ersatz
.
Suchmuster
Der Ausdruck, nach dem gesucht wird. Es kann entweder eine Zeichenkette oder ein Array mit Zeichenketten sein.
Mit dem Modifikator e wird der Parameter
Ersatz
nach den entsprechenden Ersetzungen der
Referenzen von preg_replace() wie PHP-Code
behandelt. Tipp: Stellen Sie sicher, dass Ersatz
gültigen PHP-Code erzeugt, weil sich PHP sonst über einen Syntaxfehler
(parse error) in der Zeile beschwert, die den Aufruf von
preg_replace() enthält.
Ersatz
Die Zeichenkette oder das Array mit Zeichenketten zum Ersetzen. Falls
dieser Parameter eine Zeichenkette ist und der Parameter
Suchmuster
ein Array, werden alle Suchmuster
durch diese Zeichenkette ersetzt. Falls sowohl
Suchmuster
als auch
Ersatz
Arrays sind, wird jedes
Suchmuster
durch das Gegenstück aus
Ersatz
ersetzt. Wenn das
Ersatz
-Array weniger Elemente hat als das
Suchmuster
-Array, wird jedes überzählige
Suchmuster
durch die leere Zeichenkette ersetzt.
Ersatz
darf Referenzen in der Form
\\n oder (ab PHP 4.0.4)
$n enthalten, wobei
Letztere vorzuziehen ist. Jede dieser Referenzen wird mit dem Text
ersetzt, der vom n-ten eingeklammerten
Suchmuster erfasst wurde. n kann einen Wert
von 0 bis 99 haben. \\0 oder $0
beziehen sich auf den Text, der auf das komplette Suchmuster passt. Um
die Nummer des erfassenden Teil-Suchmusters zu erhalten, werden
öffnende Klammern mit 1 beginnend von links nach rechts gezählt.
Wenn Sie mit einer Ersetzung arbeiten wollen, in der auf eine Rückreferenzierung direkt eine weitere Zahl folgt (d.h., direkt nach der Übereinstimmmung mit einem Suchmuster soll eine Zahl kommen), können Sie für Ihre Rückreferenzierung nicht die Schreibweise \\1 verwenden. So würde z.B. \\11 die Funktion preg_replace() verwirren, weil sie nicht weiß, ob Sie die Rückreferenzierung \\1 gefolgt von der Zahl 1 wollen oder nur die Rückreferenzierung \\11. In diesem Fall ist die Lösung, \${1}1 zu verwenden. Damit wird eine isolierte Rückreferenzierung $1 erzeugt und die 1 bleibt ein Buchstabensymbol.
Wenn Sie den Modifikator e verwenden, maskiert diese Funktion ein paar Zeichen (nämlich ', ", \ und NULL) in den Zeichenketten, mit denen die Rückreferenzierungen ersetzen werden. Das wird gemacht, um sicherzustellen, dass keine Syntaxfehler entstehen, wenn Rückreferenzierungen verwendet werden, die einfache oder doppelte Anführungszeichen enthalten (z.B. 'strlen(\'$1\')+strlen("$2")'). Vergewissern Sie sich, dass Sie die Zeichenketten-Syntax von PHP kennen, um genau zu wissen, wie die ausgewertete Zeichenkette aussieht.
Zeichenkette
Die Zeichenkette oder ein Array mit Zeichenketten zum Durchsuchen.
Falls Zeichenkette
ein Array ist, wird das
Suchen und Ersetzen auf jedes Element von
Zeichenkette
angewandt und der Rückgabewert ist
ebenfalls ein Array.
Limit
Die maximal mögliche Anzahl von Ersetzungen für jedes Suchmuster in
jeder Zeichenkette
. Standardmäßiger Wert:
-1 (kein Limit).
Anzahl
Falls angegeben, wird dieser Variable die Anzahl vorgenommener Ersetzungen zugewiesen.
preg_replace() gibt ein Array zurück, falls
Zeichenkette
ein Array ist, andernfalls eine
Zeichenkette.
Falls Übereinstimmungen gefunden wurden, wird die neue
Zeichenkette
zurückgegeben, andernfalls wird
Zeichenkette
unverändert zurückgegeben.
Beispiel 2. Die Verwendung von preg_replace() mit indizierten Arrays
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Wenn wir Suchmuster und Ersetzungen mit ksort() sortieren, sollten wir bekommen was wir wollten.
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
|
Beispiel 3. Ersetzen mehrerer Werte
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
|
Anmerkung: Bei Verwendung von Arrays für
Suchmuster
undErsatz
werden die Schlüssel in der Reihenfolge bearbeitet, in der sie im Array vorliegen. Das ist nicht notwendigerweise dieselbe, wie die numerische Reihenfolge der Indizes. Wenn Sie Indizes verwenden, um festzulegen welchesSuchmuster
durch welchenErsatz
ersetzt werden soll, sollten Sie vor dem Aufruf von preg_replace() ksort() auf jedes Array anwenden.
Zurück | Zum Anfang | Weiter |
preg_replace_callback | Nach oben | preg_split |