0

まず第一に、私は正規表現が非常に苦手です。ネットで見つけた正規表現を既にここに持っています。

文字列の最初の数字をインクリメントしたい、例えば$teststring = "abcd1234efgh56";

私はすでに以下を見つけました:

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

結果としてabcd1235efgh57

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

結果としてabcd1234efgh57

しかし、残りの文字列をそのままにして、最初の数字 (例では 1234) だけをインクリメントするにはどうすればよいでしょうか?

事前にどうもありがとうございました

4

4 に答える 4

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 に答える