Converting an ereg_replace to preg_replace
Solution 1
One of the differences between ereg_replace()
and preg_replace()
is that the pattern must be enclosed by delimiters: delimiter + pattern + delimiter
. As stated in the documentation, a delimiter can be any non-alphanumeric, non-backslash, non-whitespace character. This means that valid delimiters are: /
, #
, ~
, +
, %
, @
, !
and <>
, with the first two being most often used (but this is just my guess).
If your ereg_replace()
worked as you expected, then simply add delimiters to the pattern and it will do the thing. All examples below will work:
preg_replace('/\$([0-9])/', '$\1', $value);
or
preg_replace('#\$([0-9])#', '$\1', $value);
or
preg_replace('%\$([0-9])%', '$\1', $value);
Solution 2
Try
preg_replace( '#\$([0-9])#', '\$$1', $value );
user1334167
Manage several Linux web servers Involved with PHP/MYSQL apps
Updated on June 13, 2022Comments
-
user1334167 almost 2 years
I have to convert an
ereg_replace
topreg_replace
The ereg_replace code is:
ereg_replace( '\$([0-9])', '$\1', $value );
As preg is denoted by a start and end backslash I assume the conversion is:
preg_replace( '\\$([0-9])\', '$\1', $value );
As I don't have a good knowledge of regex I'm not sure if the above is the correct method to use?
-
user1334167 about 12 yearsThank you so much for that - it's like getting more pieces to the puzzle as I'm upgrading from PHP 5.2.9 and noticed the DEPRECATED messages when using PHP 3 or above.
-
user1334167 about 12 yearsThanks for that insight - it all helps
-
Scott over 2 yearsThank you for the clear, and concise explanation. Not being an expert, they looked the same to me and only this answer explains the actual difference. (I realize this is nearly 10 years later
:)
)