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.
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.
You are almost there. You are using:
$result = preg_replace("((\d+))", "$0", $string);
- The regex you specify as the 1st
preg_*family of function
should be delimited in pair of
delimiters. Since you are not using
any delimiters you get that error.
)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
- You can capturing the integer
\d+. But the captured
integer will be in
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);
1) You need to have a delimiter, the
/ works fine.
2) You have to escape the
) 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.
Check the docs – you need to use a delimiter before and after your pattern:
You’ll also want to escape the outer parentheses above as they are literals, not a nested matching group.
<?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.
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.