How to increment numeric part of a string by one?

If the string ends with numeric characters it is this simple...

$str = 'AF-1234';
echo $str++; //AF-1235

That works the same way with '345ww' though the result may not be what you expect.

$str = '345ww';
echo $str++; //345wx

@tampe125

This example is probably the best method for your needs if incrementing string that end with numbers.

$str = 'XXX-342';
echo $str++; //XXX-343

Here is an example that worked for me by doing a pre increment on the value

$admNo = HF0001;
$newAdmNo = ++$admNo;

The above code will output HF0002


You can use preg_replace_callback as:

function inc($matches) {
    return ++$matches[1];
}

$input = preg_replace_callback("|(\d+)|", "inc", $input);

Basically you match the numeric part of the string using the regex \d+ and replace it with the value returned by the callback function which returns the incremented value.

Ideone link

Alternatively this can be done using preg_replace() with the e modifier as:

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

Ideone link

Tags:

Php

String

Regex