2012-08-16 43 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

相關問題