PHP using preg_replace : “Delimiter must not be alphanumeric or backslash” error

后端 未结 5 424
小鲜肉
小鲜肉 2020-11-29 08:08

I am trying to take a string of text like so:

$string = \"This (1) is (2) my (3) example (4) text\";

In every instance where there is a pos

5条回答
  •  清歌不尽
    2020-11-29 08:23

    You are almost there. You are using:

    $result = preg_replace("((\d+))", "$0", $string);
    
    • The regex you specify as the 1st argument to preg_* family of function should be delimited in pair of delimiters. Since you are not using any delimiters you get that error.
    • ( and ) are meta char in a regex, meaning they have special meaning. Since you want to match literal open parenthesis and close parenthesis, you need to escape them using a \. Anything following \ is treated literally.
    • You can capturing the integer correctly using \d+. But the captured integer will be in $1 and not $0. $0 will have the entire match, that is integer within parenthesis.

    If you do all the above changes you'll get:

    $result = preg_replace("#\((\d+)\)#", "$1", $string);
    

提交回复
热议问题