Как заменить строку в подстроке с определенного и до определенного символа?

Пишу на PHP.
Есть строка вида 12345ABC90000DEF123ABC000GH
Нужно заменить подстроку ABC, которая начинается с 4 и до 8 символа, на подстроку XX.
Т.е. получить 12345XX90000DEF123ABC000GH

Подстрока ABC может быть где угодно (конец, начало строки), встречаться многократно и т.д.
Но мы знаем, что нам надо изменить её на участке с 4 и до 8 символа (например).
И на этом участке, по условию, будет только одна подстрока ABC.

Как я понимаю, str_replace напрямую не подойдет и регулярки тоже.

Правильно ли я понимаю, что единственный способ делить строку на 3 части, изменять середину и объединять воедино?
Или есть другие варианты или функции?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Регулярки так умеют. Пропустим любые 3-7 символов в начале строки, а потом поищем ABC
^.{3,7}(ABC)
https://regex101.com/r/VbLhJc/1
в боевом варианте флаги gm уберите
Ответ написан
Комментировать
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Вам нужно заменить только первое вхождение? Вот так можно:

$parts = explode('ABC', '12345ABC90000DEF123ABC000GH', 2); 
echo implode('XX', $parts); // 12345XX90000DEF123ABC000GH
Ответ написан
Комментировать
Регулярные выражения всё ещё позволяют сделать такую подстановку.
Find: ^([a-zA-Z0-9]{2,2})(ABC)
Replace: $1XX


Как-то так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы