2016-10-20 3 views
0

Ich habe vier Wörter A,B,C,D. Ich möchte alle Vorkommen von A B oder A C mit A D im gegebenen Satz ersetzen.PHP Regex Hilfe. preg_replace

Ich habe dieses preg_replace("/([A])\s[C|B]/i", "\1 D",$sentence);

geschrieben Aber es ist nicht eine korrekte Ausgabe zu geben. Wo ich falsch liege?

+1

Was bedeutet der Satz aus? Es kann uns einen Hinweis geben, warum dein Muster "nicht funktioniert". Eigentlich sollte das "\ 1 D" 'wie unten gezeigt in' '\ 1 D''oder' "\\ 1 D" 'geändert werden, aber das könnte nur ein Teil Ihres Problems sein. –

Antwort

0

\ innerhalb " entkommen die Zeichenfolge Sonderzeichen, nicht die regulären Sonderzeichen. Entweder Sie ' als Zeichenfolgebegrenzer oder Doppel \ Zeichen:

preg_replace('/([A])\s[C|B]/i', '\1 D', $sentence); 
+0

FYI, "String-Sonderzeichen" werden normalerweise als * Escape-Sequenzen * bezeichnet (wie '\ r',' \ n', etc.) –