Add +1 to a string obtained from another site

2019-09-13 23:36发布

问题:

I have a string I get from a website.

A portion of the string is "X2" I want to add +1 to 2.

The entire string I get is:

20120815_00_X2

What I want is to add the "X2" +1 until "20120815_00_X13"

回答1:

You can do :

$string = '20120815_00_X2';

$concat = substr($string, 0, -1);
$num = (integer) substr($string, -1);

$incremented = $concat . ($num + 1);

echo $incremented;

For more informations about substr() see => documentation



回答2:

You want to find the number at the end of your string and capture it, test for a maximum value of 12 and add one if that's the case, so your pattern would look something like:

/(\d+)$/    // get all digits at the end

and the whole expression:

$new = preg_replace('/(\d+)$/e', "($1 < 13) ? ($1 + 1) : $1", $original);

I have used the e modifier so that the replacement expression will be evaluated as php code.

See the working example at CodePad.



回答3:

This solution works (no matter what the number after X is):

function myCustomAdd($string)
{

$original = $string;

$new = explode('_',$original);

$a = end($new);

$b = preg_replace("/[^0-9,.]/", "", $a);

$c = $b + 1;

$letters = preg_replace("/[^a-zA-Z,.]/", '', $a);

$d = $new[0].'_'.$new[1].'_'.$letters.$c;

return $d;

}

var_dump(myCustomAdd("20120815_00_X13"));

Output:

string(15) "20120815_00_X14"