preg_replaceSucht und ersetzt mit regulären Ausdrücken
&reftitle.description;
stringarraynullpreg_replacestringarraypatternstringarrayreplacementstringarraysubjectintlimit-1intcount&null;
Durchsucht die Zeichenkette subject nach
Übereinstimmungen mit pattern und ersetzt sie mit
replacement.
Um eine konkrete Zeichenkette anstelle eines Musters zu finden, sollte
str_replace oder str_ireplace
anstelle dieser Funktion verwendet werden.
&reftitle.parameters;
pattern
Der Ausdruck, nach dem gesucht wird. Es kann entweder eine Zeichenkette
oder ein Array mit Zeichenketten sein.
Es stehen auch einige
PCRE-Modifikatoren
zur Verfügung.
replacement
Die Zeichenkette oder das Array mit Zeichenketten zum Ersetzen. Falls
dieser Parameter eine Zeichenkette ist und der Parameter
pattern ein Array, werden alle Suchmuster durch
diese Zeichenkette ersetzt. Falls sowohl pattern
als auch replacement Arrays sind, wird jedes
Suchmuster pattern durch das Gegenstück aus
replacement ersetzt. Wenn das
replacement-Array weniger Elemente hat als das
pattern-Array, wird jedes überzählige
pattern durch die leere Zeichenkette ersetzt.
replacement darf Referenzen in der Form
\n oder
$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. Es ist
zu beachten, dass Rückwärtsschrägstriche in &string;-Literalen ggf.
maskiert werden müssen.
Wenn Sie mit einer Ersetzung arbeiten wollen, in der auf eine
Rückreferenzierung direkt eine weitere Zahl folgt (&dh; 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 &zb; \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 veralteten 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 (&zb;
'strlen(\'$1\')+strlen("$2")'). Vergewissern Sie
sich, dass Sie die
Zeichenketten-Syntax von
PHP kennen, um genau zu wissen, wie die ausgewertete Zeichenkette
aussieht.
subject
Die Zeichenkette oder ein Array mit Zeichenketten zum Durchsuchen.
Falls subject ein Array ist, wird das Suchen und
Ersetzen auf jedes Element von subject angewandt
und der Rückgabewert ist ebenfalls ein Array.
Wenn das subject-Array assoziativ ist, bleiben
die Schlüssel im zurückgegebenen Wert erhalten.
limit
Die maximal mögliche Anzahl von Ersetzungen für jedes Suchmuster in
jeder subject. Standardmäßiger Wert:
-1 (kein Limit).
count
Falls angegeben, wird dieser Variable die Anzahl vorgenommener
Ersetzungen zugewiesen.
&reftitle.returnvalues;
preg_replace gibt ein Array zurück, falls
subject ein Array ist, andernfalls eine
Zeichenkette.
Falls Übereinstimmungen gefunden wurden, wird die neue Zeichenkette
subject zurückgegeben, andernfalls wird
subject unverändert zurückgegeben oder &null;, falls
ein Fehler auftrat.
&reftitle.errors;
Die Verwendung des Modifikators "\e" führt zu einem Fehler der Stufe
E_WARNING.
&pcre.pattern.warning;
&reftitle.examples;
Die Verwendung von Rückreferenzierungen mit darauf folgenden numerischen
Literalen
]]>
&example.outputs;
Die Verwendung von preg_replace mit indizierten
Arrays
]]>
&example.outputs;
Wenn wir Suchmuster und Ersetzungen mit ksort
sortieren, sollten wir bekommen, was wir wollten.
]]>
&example.outputs;
Ersetzen mehrerer Werte
]]>
&example.outputs;
Leerzeichen entfernen
Dieses Beispiel entfernt überschüssige Leerzeichen aus einer
Zeichenkette.
]]>
Die Verwendung des Parameters count
]]>
&example.outputs;
&reftitle.notes;
Bei der Verwendung von Arrays für pattern und
replacement 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 Indizes verwendet werden, um festzulegen welches
pattern durch welchen Ersatz
replacement ersetzt werden soll, sollte vor dem
Aufruf von preg_replaceksort
auf jedes Array angewendet werden.
Wenn sowohl pattern als auch
replacement Arrays sind, werden die
Übereinstimmungsregeln nacheinander angewendet. Das heißt, das zweite
pattern/replacement-Paar
wirkt nicht auf die ursprüngliche Zeichenkette, sondern auf die
Zeichenkette, die sich aus dem ersten
pattern/replacement-Paar
ergibt. Um parallele Ersetzungen zu simulieren, &zb; das Vertauschen von
zwei Werten, muss ein Muster durch einen zwischengeschalteten Platzhalter
ersetzt werden, der dann in einem späteren Paar durch die gewünschte
Ersetzung ersetzt wird.
]]>
&reftitle.seealso;
PCRE-Suchmusterpreg_quotepreg_filterpreg_matchpreg_replace_callbackpreg_splitpreg_last_errorstr_replace