preg_replace: Nummer nach der Rückreferenz hinzufügen

7

Situation

Ich möchte mit preg_replace() eine Ziffer '8' nach jedem von [aeiou] hinzufügen.

Beispiel

von

%Vor%

bis

%Vor%


Frage

Wie soll ich die Ersatzzeichenfolge schreiben?

%Vor%

Dies ist nur ein Beispiel , daher ist str_replace() nicht eine gültige Antwort.
Ich möchte wissen, wie man eine Nummer nach der Rückreferenz in der Ersetzungszeichenfolge hat.

    
MightyPork 02.08.2013, 23:54
quelle

2 Antworten

18

Die Lösung besteht darin, die Rückreferenz in ${} zu verpacken.

%Vor%

was a8bcde8fghi8j

ausgibt

Siehe das Handbuch zu diesem Spezialfall mit Rückreferenzen.

>     
Aron Cederholm 02.08.2013, 23:59
quelle
4

Sie können dies tun:

%Vor%

Hier ist ein relevantes Zitat aus der Dokumentation zur Rückreferenz:

  

Wenn Sie mit einem Ersatzmuster arbeiten, bei dem einer Rückwärtsreferenz unmittelbar eine andere Nummer folgt (d. h. eine Zeichennummer unmittelbar nach einem übereinstimmenden Muster platziert), können Sie nicht die bekannte \ 1-Notation für Ihre Rückwärtsreferenz verwenden. \ 11 zum Beispiel würde preg_replace () verwirren, da es nicht weiß, ob Sie die \ 1-Rückwärtsreferenz gefolgt von einer Literal-1 oder die \ 11-Rückwärtsreferenz gefolgt von nichts wollen. In diesem Fall sollte die Lösung \ $ {1} 1 sein. Dies erzeugt eine isolierte $ 1-Rückwärtsreferenz, wobei die 1 als Literal zurückbleibt.

    
jh314 03.08.2013 00:00
quelle

Tags und Links