Я пытаюсь использовать регулярное выражение для удаления только соответствующей части строки. Я использую функцию 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
что является рекомендуемым способом.
Простейший способ упоминается несколькими типами. Другая идея – взгляд или обратная связь, на этот раз они переполнены, но часто весьма полезны.