0

首先:我的正则表达式非常糟糕,我已经在这里找到了我在网上找到的那些。

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

我已经找到了以下内容:

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

将导致abcd1235efgh57

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

将导致abcd1234efgh57

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

非常感谢您提前

4

4 回答 4

3

查看文档:preg_replace 上的 php.net 手册

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

于 2013-07-24T14:46:07.070 回答
0

你可以使用:

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

这将匹配第一个数字之前的所有非数字字符(如果有)作为$1,第一个数字作为$2,以及所有后续字符(如果有)作为$3

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

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

于 2013-07-24T15:30:08.770 回答
0

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

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

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

它会给你

$teststring = 'abcd1235efgh56'

于 2013-07-24T16:20:04.953 回答
-1

尝试

preg_replace('/^([^0-9]+)?([0-9]+)([^0-9]+)?/', "$2+1", $teststring);
于 2013-07-24T14:47:51.007 回答