我有以下几点:
$string = '4745518 some text 4510018 some text 4743618 4745518 some text 4510518 some text';
$newstring = preg_replace('/[1-9]{7,7}/','NEWTRANSACTION: $0',$string);
我的意图是“用'NEWTRANSACTION:'加上这七位数字替换所有出现的七位数字。”
但是,我的结果是:
NEWTRANS: 4745518 some text 4510018 some text NEWTRANS: 4743618 NEWTRANS: 4745518
some text 4510518 some text
换句话说,似乎只有部分七位数字组被替换。如果我编辑原始字符串,移动七位数字组,这些相同的七位数字组将被替换。这就像只有某些数字组合被标记为替换。我的实际输入字符串有数百行长,而且似乎确实正在替换随机的七位数字组。
任何人都可以看到有什么问题吗?提前致谢。
=== 编辑 === 感谢您这么快提供的所有帮助。我会使用/\b\d{7}\b/
它,它就像一个魅力。我是 regex 的新手,所以我在这里学到了一些东西——尽管没有意识到缺少的“0”对我来说是完全愚蠢的。
我的不好,在代码中显示“NEWTRANSACTION:”,但在输出中显示“NEWTRAN:”。我只是输入输出,而不是复制/粘贴,并意外地缩短了它。
再次感谢。
更改[1-9]
为后您的代码工作正常[0-9]
(因为您的数字在某些地方也有 0)
<?php
$string = '4745518 some text 4510018 some text 4743618 4745518 some text 4510518 some text';
echo $newstring = preg_replace('/[0-9]{7,7}/','NEWTRANSACTION: $0',$string);
注意:- @GrumpyCrouton、@kaii 和 @Barmar 在评论中给出的代码要短得多
/\b\d{7}\b/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句