Regex to match “{number}”

前端 未结 2 1886
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-06 01:10

I need to replace \"{Z}\" with \"test(Z)\" where Z is always an unsigned integer using PHP and regular expressions (unless there\'s a faster way?).

$code=\'{         


        
相关标签:
2条回答
  • 2021-01-06 01:18
    $code = preg_replace('/\{(\d+)\}/', 'test($1)', $code);
    

    In my experience, preg_replace is much faster than any method of doing replacements using str_replace or strtr.

    0 讨论(0)
  • 2021-01-06 01:41

    The missing line is this:

    $code = preg_replace('/{([0-9]+)}/', 'test($1)', $code);
    

    How it works:

    {       match a literal {
    (       start a capturing group
    [0-9]+  one or more digits in 0-9
    )       end the capturing group
    }       match a literal }
    

    The $1 in the replacement string refers to the string captured by the first (and only) capturing group.

    0 讨论(0)
提交回复
热议问题