preg_replace

(PHP 4, PHP 5, PHP 7, PHP 8)

preg_replaceSucht und ersetzt mit regulären Ausdrücken

Beschreibung

preg_replace(
    string|array $pattern,
    string|array $replacement,
    string|array $subject,
    int $limit = -1,
    int &$count = null
): string|array|null

Durchsucht die Zeichenkette subject nach Übereinstimmungen mit pattern und ersetzt sie mit replacement.

Parameter-Liste

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 (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 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 (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.

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.

Rückgabewerte

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.

Fehler/Exceptions

Die Verwendung des Modifikators "\e" führt zu einem Fehler der Stufe E_WARNING.

Wenn das übergebene Regex-Muster nicht zu einem gültigen Regex kompiliert werden kann, wird ein Fehler der Stufe E_WARNING ausgegeben.

Beispiele

Beispiel #1 Die Verwendung von Rückreferenzierungen mit darauf folgenden numerischen Literalen

<?php
$zeichenkette 
'15. April 2003';
$suchmuster '/(\d+)\. (\w+) (\d+)/i';
$ersetzung '$1,$3';
echo 
preg_replace($suchmuster$ersetzung$zeichenkette);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

April1,2003

Beispiel #2 Die Verwendung von preg_replace() mit indizierten Arrays

<?php
$zeichenkette 
'Der schnelle braune Fuchs springt über den faulen Hund.';

$suchmuster = array();
$suchmuster[0] = '/schnelle/';
$suchmuster[1] = '/braune/';
$suchmuster[2] = '/Fuchs/';

$ersetzungen = array();
$ersetzungen[2] = 'Bär';
$ersetzungen[1] = 'schwarze';
$ersetzungen[0] = 'langsame';

echo 
preg_replace($suchmuster$ersetzungen$zeichenkette);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Der Bär schwarze langsame springt über den faulen Hund.

Wenn wir Suchmuster und Ersetzungen mit ksort() sortieren, sollten wir bekommen, was wir wollten.

<?php
ksort
($suchmuster);
ksort($ersetzungen);
echo 
preg_replace($suchmuster$ersetzungen$zeichenkette);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Der langsame schwarze Bär springt über den faulen Hund.

Beispiel #3 Ersetzen mehrerer Werte

<?php
$suchmuster 
= array ('/(19|20)(\d)-(\d{1,2})-(\d{1,2})/',
                     
'/^\s*{(\w+)}\s*=/');
$ersetzen = array ('\4.\3.\1\2''$\1 =');
echo 
preg_replace($suchmuster$ersetzen' = 1999-5-27');
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

$startDatum = 27.5.1999

Beispiel #4 Leerzeichen entfernen

Dieses Beispiel entfernt überschüssige Leerzeichen aus einer Zeichenkette.

<?php
$str 
'foo   o';
$str preg_replace('/\s\s+/'' '$str);
// Das ist jetzt 'foo o'
echo $str;
?>

Beispiel #5 Die Verwendung des Parameters count

<?php
$anzahl 
0;

echo 
preg_replace(array('/\d/''/\s/'), '*''xp 4 to', -$anzahl);
echo 
$anzahl//3
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

xp***to
3

Anmerkungen

Hinweis:

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_replace() ksort() auf jedes Array angewendet werden.

Hinweis:

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, z. B. 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.

<?php
$p 
= array('/a/''/b/''/c/');
$r = array('b''c''d');
print_r(preg_replace($p$r'a'));
// Gibt d aus
?>

Siehe auch

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Definition von Stored Procedures - eine Einführung

Stored Procedures sind vordefinierte SQL-Codeblöcke, die in einer Datenbank gespeichert sind und bei Bedarf aufgerufen werden können. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: mySQL-Tutorials

Wie kann man komplexe Abfragen mit SQL-Querys In MySQLi effektiv durchführen?

In diesem MySQL-Tutorial wird erklärt, wie komplexe SQL-Abfragen in MySQLi effizient durchgeführt werden können. Wir werden uns mit verschiedenen Aspekten der Datenbankabfrage beschäftigen und spezifische Methoden kennenlernen. ...

TheMax

Autor : TheMax
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Professioneller Webentwickler & Webdesigner

Of course, here is the translation: Hello, Thank you for your interest in the long-term project. Your extensive skills and experience in web dev ...

Geschrieben von Athelstan am 15.04.2024 09:25:39
Forum: Jobgesuche
Wir stellen unsere SEO-Agentur vor

Hallo In der heutigen digitalen Welt war es für Unternehmen noch nie so einfach, ihre Reichweite weltweit zu vergrößern. Wenn Sie außerhalb I ...

Geschrieben von thomasmuller am 14.04.2024 07:18:33
Forum: User stellen sich vor
Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Hallöchen zusammen, ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dies ...

Geschrieben von derH0st am 11.04.2024 15:58:37
Forum: PHP Developer Forum
PHP 8.3.3 - App kann auf dem PC nicht ausgeführt werden

Problem gelöst. Die php.exe hatte einen defekt. Neue heruntergeladen und fertig.

Geschrieben von Tetra1081 am 10.04.2024 16:49:14
Forum: PHP Developer Forum