How can I find, increment and replace in php?

前端 未结 3 1058
死守一世寂寞
死守一世寂寞 2021-01-23 01:03

I have strings in the form \\d+_\\d+ and I want to add 1 to the second number. Since my explanation is so very clear, let me give you a few examples:

相关标签:
3条回答
  • 2021-01-23 01:33

    Use explode (step-by-step):

    $string = "123456_2";
    
    echo $string;
    
    $parts = explode("_", $string);
    
    $lastpart = (int)$parts[1];
    
    $lastpart++;
    
    $newstring = $parts[0] . "_" . (string)$lastpart;
    
    echo $newstring;
    

    This separates the string on the "_" character and converts the second part to an integer. After incrementing the integer, the string is recreated.

    0 讨论(0)
  • 2021-01-23 01:38
    $new = preg_replace("/(\d+)_(\d+)/e", '"$1_" . ("$2" + 1)', $old);
    

    The $1 etc terms are not actually variables, they are strings that preg_replace will interpret in the replacement text. So there is no way to do this using straight text-based preg_replace.

    However, the /e modifier on the regular expression asks preg_replace to interpret the substitution as code, where the tokens $1 etc will actually be treated as variables. You supply the code as a string, and preg_replace will eval() it in the proper context, using its result as the replacement.

    0 讨论(0)
  • 2021-01-23 01:42

    Here's the solution for the PHP 5.3 (now when PHP supports lambdas)

    $new = preg_replace_callback("/(\d+_)(\d+)", function($matches)
    {
        return $matches[1] . (1 + $matches[2]);
    }
    , $new);
    
    0 讨论(0)
提交回复
热议问题