首先:我对正则表达式很不熟悉,我已经在网上找到了这些正则表达式。
我想增加字符串中的第一个数字,例如$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);