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

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);

Leave a Comment