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


preg_replace only first number in string

首先:我对正则表达式很不熟悉,我已经在网上找到了这些正则表达式。

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

我已经发现了以下内容:

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

将导致abcd1235efgh57

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

将导致abcd1234efgh57

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

提前非常感谢

查看preg_replace 上的docs:php.net手册

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

您可以使用:

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

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

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

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

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

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

你可以为你的案子加1。。

它会给你

$teststring='abcd1235efgh56'

尝试

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