在 PHP 中使用 preg_replace - 奇怪的行为
Using preg_replace in PHP - Strange Behaviour
我有以下内容:
$string = '4745518 some text 4510018 some text 4743618 4745518 some text 4510518 some text';
$newstring = preg_replace('/[1-9]{7,7}/','NEWTRANSACTION: [=12=]',$string);
我的意图是"replace all occurrences of seven digits with 'NEWTRANSACTION: ' plus those seven digits."
然而,我的结果是:
NEWTRANS: 4745518 some text 4510018 some text NEWTRANS: 4743618 NEWTRANS: 4745518
some text 4510518 some text
换句话说,似乎只有七位数字组中的一部分被替换了。如果我编辑原始字符串,移动七位数字组,那些相同的七位数字组将被替换。这就像只有某些数字组合被标记为替换。我实际输入的字符串有几百行,而且看起来真的是随机的七位数字组被替换了。
谁能看出哪里出了问题?提前致谢。
=== 编辑 ===
感谢所有这么快的帮助。我会用
/\b\d{7}\b/
它就像一个魅力。我是正则表达式的新手,所以我在这里学到了一些东西——尽管没有意识到缺少的“0”对我来说完全是愚蠢的。
我的错,在代码中显示 'NEWTRANSACTION: ',但在输出中显示 'NEWTRAN:'。我只是输入输出,而不是 copy/paste,不小心将它缩短了。
再次感谢。
你的代码在将 [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: [=10=]',$string);
注意:-@GrumpyCrouton、@kaii 和@Barmar
的评论中给出了一个更短的代码
/\b\d{7}\b/
我有以下内容:
$string = '4745518 some text 4510018 some text 4743618 4745518 some text 4510518 some text';
$newstring = preg_replace('/[1-9]{7,7}/','NEWTRANSACTION: [=12=]',$string);
我的意图是"replace all occurrences of seven digits with 'NEWTRANSACTION: ' plus those seven digits."
然而,我的结果是:
NEWTRANS: 4745518 some text 4510018 some text NEWTRANS: 4743618 NEWTRANS: 4745518
some text 4510518 some text
换句话说,似乎只有七位数字组中的一部分被替换了。如果我编辑原始字符串,移动七位数字组,那些相同的七位数字组将被替换。这就像只有某些数字组合被标记为替换。我实际输入的字符串有几百行,而且看起来真的是随机的七位数字组被替换了。
谁能看出哪里出了问题?提前致谢。
=== 编辑 ===
感谢所有这么快的帮助。我会用
/\b\d{7}\b/
它就像一个魅力。我是正则表达式的新手,所以我在这里学到了一些东西——尽管没有意识到缺少的“0”对我来说完全是愚蠢的。
我的错,在代码中显示 'NEWTRANSACTION: ',但在输出中显示 'NEWTRAN:'。我只是输入输出,而不是 copy/paste,不小心将它缩短了。
再次感谢。
你的代码在将 [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: [=10=]',$string);
注意:-@GrumpyCrouton、@kaii 和@Barmar
的评论中给出了一个更短的代码/\b\d{7}\b/