Мне нужен совет по этому фрагменту
$text = preg_replace('|(A.*)?A(.*)C|', '$1foo$2bar', $text);
Это будет соответствовать ABC в "AB ABC D" и заменять его на "AB fooBbar D"; как вы можете видеть, это также соответствует части «AB» в начале, которую я должен повторить в строке замены с $ 1, чтобы не потерять ее.
Это лучший способ получить такой результат?
Есть ли флаг X такой, что
$text = preg_replace('|A(.*)C|X', 'foo$1bar', $text);
дает тот же результат?
Надеюсь, я был ясен
Спасибо!
РЕДАКТИРОВАТЬ : Рассмотрим A, B, C как атомарные строки произвольных символов, они также могут содержать пробелы
Кроме того, представленный пример на самом деле глючит, так как он соответствует только второй "ABC" в "ABC ABC".
EDIT2 : Извините, я, наверное, очень плохо объяснил проблему. Суть в том, что я бы хотел сопоставить с любым между двумя строками A, C, чтобы в совпадении не было подстроки A
Еще раз спасибо