PHP
Referenzliste
preg_replace
PCRE-Funktionen
Befehl:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
Parameter-Liste:
Beschreibung | |
---|---|
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, inklusive dem veralteten 'e' (PREG_REPLACE_EVAL), der spezifisch für diese Funktion ist. | |
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 (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. Um einen Backslash im Ersatz zu verwenden, muss er verdoppelt werden ("\\\\" PHP-Zeichenkette).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 weiss, 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 (z.B. 'strlen(\'$1\')+strlen("$2")'). Vergewissern Sie sich, dass Sie die Zeichenketten-Syntax von PHP können, um genau zu wissen, wie die ausgewertete Zeichenkette aussieht. | |
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. | |
Die maximal mögliche Anzahl von Ersetzungen für jedes Suchmuster in jeder subject . Standardmäßiger Wert: -1 (kein Limit). | |
Falls angegeben, wird dieser Variable die Anzahl vorgenommener Ersetzungen zugewiesen. |
Rückgabewerte:
preg_replace() gibt ein Array zurück, falls
Falls Übereinstimmungen gefunden wurden, wird die neue Zeichenkette
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. Beschreibung:
Durchsucht die Zeichenkette
subject
nach Übereinstimmungen mit pattern
und ersetzt sie mit replacement
. Aktiv in Version:
(PHP 4, PHP 5, PHP 7)
Hinweis:
Hinweis:
Bei 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 Sie Indizes verwenden, um festzulegen welches pattern
durch welchen Ersatz replacement
ersetzt werden soll, sollten Sie vor dem Aufruf von preg_replace() ksort() auf jedes Array anwenden.Fehler:
Fehler:
Bei Übergabe des Modifikators "\e" wird ein Fehler der Stufe
E_DEPRECATED
ausgegeben.Siehe auch:
Sucht und ersetzt mit regulären Ausdrücken
Führt eine Suche mit einem regulären Ausdruck durch
Sucht und ersetzt einen regulären Ausdruck unter Verwendung eines Callbacks
Zerlegt eine Zeichenkette anhand eines regulären Ausdrucks
Liefert den Fehlercode der letzten PCRE RegEx-Auswertung
preg_replace() - Beispiel: Die Verwendung von Rückreferenzierungen mit darauf folgenden numerischen Literalen
Eingabe:
<?PHP $zeichenkette = '15. April 2003'; $suchmuster = '/(\d+)\. (\w+) (\d+)/i'; $ersetzung = '${2}1,$3'; echo preg_replace($suchmuster, $ersetzung, $zeichenkette); ?>
Ausgabe:
April1,2003
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
preg_replace() - Beispiel 2: Die Verwendung von preg_replace() mit indizierten Arrays
Eingabe:
<?PHP $zeichenkette = 'Der schnelle braune Fuchs sprang ü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); ?>
Ausgabe:
Der B�r schwarze langsame sprang �ber den faulen Hund.
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
preg_replace() - Beispiel 2a:
Eingabe:
Wenn wir Suchmuster und Ersetzungen mit ksort() sortieren, sollten wir bekommen was wir wollten.
<?PHP $zeichenkette = 'Der schnelle braune Fuchs sprang ü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'; ksort($suchmuster); ksort($ersetzungen); echo preg_replace($suchmuster, $ersetzungen, $zeichenkette); ?>
Ausgabe:
Der langsame schwarze B�r sprang �ber den faulen Hund.
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
preg_replace() - Beispiel 3: Ersetzen mehrerer Werte
Eingabe:
<?PHP $suchmuster = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', '/^\s*{(\w+)}\s*=/'); $ersetzen = array ('\4.\3.\1\2', '$\1 ='); echo preg_replace($suchmuster, $ersetzen, '{startDatum} = 1999-5-27'); ?>
Ausgabe:
$startDatum = 27.5.1999
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
preg_replace() - Beispiel 4: Leerzeichen entfernen
Eingabe:
<?PHP $str = 'foo o'; $str = preg_replace('/\s\s+/', ' ', $str); // Das ist jetzt 'foo o' echo $str; ?>
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
preg_replace() - Beispiel 5: Die Verwendung des Parameters count
Eingabe:
<?PHP $anzahl = 0; echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $anzahl); echo $anzahl; //3 ?>
Beschreibung:
Beschreibung | |
---|---|
7.0.0 | Die Unterstützung für den/eModifikator wurde entfernt. Verwenden Sie statt dessen preg_replace_callback(). |
5.5.0 | Der Modifikator /e ist veraltet und sollte nicht mehr verwendet werden. Verwenden Sie stattdessen preg_replace_callback(). Für ergänzende Informationen über Sicherheitsrisiken siehe PREG_REPLACE_EVAL. |
5.1.0 | Den Parameter count hinzugefügt |
4.0.4 | Die '$n'-Form für den Parameter replacement hinzugefügt. |
4.0.2 | Den Parameter limit hinzugefügt. |
PCRE-Funktionen