preg_replace, как заменить только шаблон xxx ($ 1) yyy внутри селектора

Я пытаюсь использовать регулярное выражение для удаления только соответствующей части строки. Я использую функцию preg_replace и preg_replace удалить соответствующий текст, поместив круглые скобки вокруг соответствующей части. Пример:

 preg_replace('/text1(text2)text3/is','',$html); 

Это заменяет всю строку на ''. Я хочу только стереть text2, но оставить text1 и text3 неповрежденными. Как я могу сопоставить и заменить только ту часть строки, которая соответствует?

Существует альтернатива использованию text1 и text3 в шаблоне соответствия, а затем их text3 обратно через заменяющую строку. Вы можете использовать такие утверждения :

 preg_replace('/(?<=text1)(text2)(?=text3)/', "", $txt); 

Таким образом, регулярное выражение выглядит только для присутствия , но не учитывает две строки при применении замены.

http://www.regular-expressions.info/lookaround.html для получения дополнительной информации.

Используйте обратные ссылки (т.е. скобки), чтобы сохранить только те части выражения, которые вы хотите запомнить. Вы можете вспомнить содержимое строки замены, используя $1 , $2 и т. Д .:

 preg_replace('/(text1)text2(text3)/is','$1$2',$html); 

Попробуй это:

 $text = preg_replace("'(text1)text2(text3)'is", "$1$2", $text); 

Надеюсь, что это работает!

Изменить: изменилось \\1\\2 до $1$2 что является рекомендуемым способом.

Простейший способ упоминается несколькими типами. Другая идея – взгляд или обратная связь, на этот раз они переполнены, но часто весьма полезны.