一关于正则表达式的,难道它贪婪了吗
php吧
全部回复
仅看楼主
level 7
foreach ($_POST as $key => $value) {
//echo $key."<br/>";
//$re_info=preg_replace("/define\(\"{$key}\",\".*?\"\)/",'5', $info);
$re_info=preg_replace("/define\(\"{$key}\",\".*?\"\)/", "define(\"{$key}\",\"{$value}\")", $info);
}
结果只能匹配最后一个key对应的值就行replace,其他的都没有进行replace,苦闷??求教...
2014年04月08日 14点04分 1
level 7
求大神看不懂
2014年04月08日 15点04分 2
level 7
你的$info 没有重新赋值,也就是说,你虽然每次都replace了,但你的$info还是最开始的值,所以你最后的$re_info是最后一次循环的结果
2014年04月08日 15点04分 3
$info我是从文件提出来的,在使用正则替换后在把re_info放回文件里面的,怎么重新复值?
2014年04月08日 16点04分
回复@风飘叶落927 :你的想法没错,但你的程序里面,每次都是替换info的初值,所以只有最后一次的结果
2014年04月08日 16点04分
回复@风飘叶落927 : 如果你想保留info的值, 在循环开始前,把info给re_info,然后在循环里替换re_info
2014年04月08日 16点04分
还得请教,上断代码给我看看吧!
2014年04月08日 16点04分
level 7
$re_info = $info;
foreach ($_POST as $key => $value) {
//echo $key."<br/>";
//$re_info=preg_replace("/define\(\"{$key}\",\".*?\"\)/",'5', $info);
$re_info=preg_replace("/define\(\"{$key}\",\".*?\"\)/", "define(\"{$key}\",\"{$value}\")", $re_info);
}
2014年04月08日 16点04分 4
level 7
这个还真的可以了,info直接进来不交给变量re_info还真的不行了
2014年04月08日 16点04分 5
因为你每次都replace的 同一个值 前几次当然保存不下来 多努力吧 晚安
2014年04月08日 16点04分
1