Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a string formed up by numbers and sometimes by letters.

Example AF-1234 or 345ww.

I have to get the numeric part and increment it by one.
how can I do that? maybe with regex?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
420 views
Welcome To Ask or Share your Answers For Others

1 Answer

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...