2012-08-16 46 views
2

我正尝试使用regexp从PHP更新配置文件。我似乎不能更新数字。为什么我的preg_replace调用只能用于字符而不是数字?

这是我$contents

$sugar_config['sysconfig_next_order_no'] = 'AAAAA'; 
$sugar_config['sysconfig_next_quote_no'] = '027827'; 

这是我$pattern

/(.*sysconfig_next_order_no']\s=\s')(.*)(';)/ 

当我使用所有的字母 “AAAAAA” 它的工作原理 -

preg_replace($pattern, '$1AAAAAAA$3', $contents); 

结果:

$sugar_config['sysconfig_next_order_no'] = 'AAAAAAA'; 
$sugar_config['sysconfig_next_quote_no'] = '027827'; 

当我使用所有的数字,它失败:

preg_replace($pattern, '$1123123$3', $contents); 

结果:

23123'; 
$sugar_config['sysconfig_next_quote_no'] = '027827'; 

有人可以提供一些线索,我强迫自己经常使用正则表达式。

+0

提示:您的替换字符串正在寻找第11个捕获组,而不是第1个捕获组。你的答案在于'replacement'参数的文档[here](http://php.net/manual/en/function.preg-replace.php)。 – DaveRandom 2012-08-16 21:15:59

+0

这是因为它在$ 1123123'处寻找** 1123123rd **加括号组。 – inhan 2012-08-16 21:16:22

+0

啊哈!!!!我如何分离数字? $ {1} 123123 $ 3 – 2012-08-16 21:23:23

回答

0

你在你的正则表达式中有next_order_no - 所以它只会匹配文本与该键。这不是关于数字或字母 - 那是红鲱鱼!

+0

我知道我想更新next_order_no,它适用于CHARACTERS而不是DIGITS – 2012-08-16 21:21:58

相关问题