preg_replace how to replace only matching xxx($1)yyy pattern inside the selector

一曲冷凌霜 提交于 2019-11-29 22:58:21

There is an alternative to using text1 and text3 in the match pattern and then putting them back in via the replacement string. You can use assertions like this:

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

This way the regular expression looks just for the presence, but does not take the two strings into account when applying the replacement.

http://www.regular-expressions.info/lookaround.html for more information.

Use backreferences (i.e. brackets) to keep only the parts of the expression that you want to remember. You can recall the contents in the replacement string by using $1, $2, etc.:

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

Try this:

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

Hope it works!

Edit: changed \\1\\2 to $1$2 which is the recommended way.

The simplest way has been mentioned several types. Another idea is lookahead/lookback, they're overkill this time but often quite useful.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!