preg_replace只有字符串中的第一个数字

时间:2013-07-24 14:41:40

标签: php string numbers preg-replace increment

首先:我对正则表达式非常不满意,我已经在网上找到了正则表达式。

我想增加字符串中的第一个数字,例如$teststring = "abcd1234efgh56";

我已经找到了以下内容:

preg_replace( "|(\d+)|e", "$1+1", $teststring);

将导致abcd1235efgh57

preg_replace( "|(\d+)(?!.*\d)|e", "$1+1", $teststring);

将导致abcd1234efgh57

但是如何只增加第一个数字(示例中为1234),同时保留字符串的其余部分?

非常感谢您提前

4 个答案:

答案 0 :(得分:3)

查看文档:{​​{3}}

使用第四个参数来限制替换次数

答案 1 :(得分:0)

尝试

preg_replace('/^([^0-9]+)?([0-9]+)([^0-9]+)?/', "$2+1", $teststring);

答案 2 :(得分:0)

您可以使用:

preg_replace('/([^0-9]*)(\d+)(.*)/e', '"$1" . ($2+2) . "$3"' , $str, 1);

这会将所有非数字字符(如果有)与第一个数字$1匹配,第一个数字设为$2,所有后续字符(如果有)匹配为$3

然后输出将2添加到第一个数字的字符串(您可以将$2+2更改为$2+NUMBER)。

函数中的最后一个参数1仅将重复限制为1次......

答案 3 :(得分:0)

preg_replace的可选第四个参数是limit:

preg_replace($ search,$ replace,$ subject,$ limit)

你可以为你的情况加1 ..

它会给你

$ teststring ='abcd1235efgh56'