Home » Php » regex – PHP using preg_replace : "Delimiter must not be alphanumeric or backslash" error

regex – PHP using preg_replace : "Delimiter must not be alphanumeric or backslash" error

Posted by: admin April 23, 2020 Leave a comment

Questions:

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 positive integer inside of parentheses, I’d like to replace that with simply the integer itself.

The code I’m using now is:

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

But I keep getting a

Delimiter must not be alphanumeric or backslash.

Warning

Any thoughts? I know there are other questions on here that sort of answer the question, but my knowledge of regex is not enough to switch it over to this example.

How to&Answers:

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

Answer:

1) You need to have a delimiter, the / works fine.

2) You have to escape the ( and ) characters so it doesn’t think it’s another grouping.

3) Also, the replace variables here start at 1, not 0 (0 contains the FULL text match, which would include the parentheses).

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

Something like this should work. Any further questions, go to PHP’s preg_replace() documentation – it really is good.

Answer:

Check the docs – you need to use a delimiter before and after your pattern: "/\((\d+)\)/"

You’ll also want to escape the outer parentheses above as they are literals, not a nested matching group.

See: preg_replace manual page

Answer:

Try:

<?php
$string = "This (1) is (2) my (3) example (4) text";
$output = preg_replace('/\((\d)\)/i', '$1', $string);
echo $output;
?>

The parenthesis chars are special chars in a regular expression. You need to escape them to use them.

Answer:

Delimiter must not be alphanumeric or backslash.,

try typing your parameters inside “/ …. /” as shown bellow. Else the code will output >>> Delimiter must not be alphanumeric or backslash.

$yourString='hi there, good friend';
$dividorString='there';
$someSstring=preg_replace("/$dividorString/",'', $yourString);

echo($someSstring);

// hi, good friend

.
.
worked for me.