繁体   English   中英

PHP preg_replace

[英]PHP preg_replace

preg_replace("/{{(.*?)}}/e","$$1",$rcontent); 

请向我解释声明......我无法理解这一点

考虑一个使用示例:

$rcontent = "abc {{foo}} def";
$foo = 'bar';
$rcontent = preg_replace("/{{(.*?)}}/e","$$1",$rcontent); 
echo $rcontent; // prints abc bar def

我假设您将preg_match的值分配回$rcontent ,否则它将没有任何意义。

现在你正在使用的正则表达式是{{(.*?)}} ,它在{{}}之间寻找任何(非贪婪的)并且还因为括号而记住匹配的字符串。
在我的情况下.*? 匹配foo

接下来更换零件是$$1 现在$1foo ,所以$$1将是$foo ,这是bar 所以{{foo}}将被$foo的值替换为bar

如果$$1仅仅是一个类型,你想用$1 ,则正则表达式替换{{foo}}foo

lazy *重复前一项零次或多次。 懒惰,因此引擎首先尝试跳过前一项,然后尝试使用前一项的不断增加的匹配进行排列。

例如: .*? abc "def" "ghi" jkl匹配"def"

http://www.regular-expressions.info/reference.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM