为什么我的preg_replace调用只能用于字符而不是数字?
问题描述:
我正尝试使用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';
有人可以提供一些线索,我强迫自己经常使用正则表达式。
答
你在你的正则表达式中有next_order_no
- 所以它只会匹配文本与该键。这不是关于数字或字母 - 那是红鲱鱼!
+0
我知道我想更新next_order_no,它适用于CHARACTERS而不是DIGITS – 2012-08-16 21:21:58
提示:您的替换字符串正在寻找第11个捕获组,而不是第1个捕获组。你的答案在于'replacement'参数的文档[here](http://php.net/manual/en/function.preg-replace.php)。 – DaveRandom 2012-08-16 21:15:59
这是因为它在$ 1123123'处寻找** 1123123rd **加括号组。 – inhan 2012-08-16 21:16:22
啊哈!!!!我如何分离数字? $ {1} 123123 $ 3 – 2012-08-16 21:23:23