2016-10-20 3 views
0

У меня есть четыре слова A,B,C,D. Я хочу заменить все вхождения A B или A C с A D в данном предложении.Справка по регулярному выражению PHP. preg_replace

Я написал эту preg_replace("/([A])\s[C|B]/i", "\1 D",$sentence);

Но это не дает правильный вывод. Где я ошибаюсь?

+1

Что делает предложение выглядеть? Это может дать нам понять, почему ваш шаблон «не работает». Фактически, '' \ 1 D "' следует изменить, как показано ниже, на '' \ 1 D'' или '' \\ 1 D "', но это может быть только частью вашей проблемы. –

ответ

0

\ в пределах " избегают символов строки, а не специальных символов регулярного выражения. Либо вы ' разделитель строки или двойные \ символов:

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

FYI, "строковые специальные символы" обычно называются * escape-последовательностями * (например, '\ r',' \ n' и т. Д.). –