34

I have written following PHP code:

$input="menu=1&type=0&";

print $input."<hr>".ereg_replace('/&/', ':::', $input);

After running above code, it gives following warning,

Deprecated: Function ereg_replace() is deprecated

How can I resolve this warning.

zzlalani
  • 22,960
  • 16
  • 44
  • 73
Pradip
  • 1,317
  • 4
  • 21
  • 36
  • A Reference Question is: [How can I convert ereg expressions to preg in PHP?](http://stackoverflow.com/q/6270004/367456) – hakre Nov 16 '12 at 09:12

6 Answers6

45

Switch to preg_replaceDocs and update the expression to use preg syntax (PCRE) instead of ereg syntax (POSIX) where there are differencesDocs (just as it says to do in the manual for ereg_replaceDocs).

hakre
  • 193,403
  • 52
  • 435
  • 836
Quentin
  • 914,110
  • 126
  • 1,211
  • 1,335
35
print $input."<hr>".ereg_replace('/&/', ':::', $input);

becomes

print $input."<hr>".preg_replace('/&/', ':::', $input);

More example :

$mytext = ereg_replace('[^A-Za-z0-9_]', '', $mytext );

is changed to

$mytext = preg_replace('/[^A-Za-z0-9_]/', '', $mytext );
Sumit Bijvani
  • 8,154
  • 17
  • 50
  • 82
6

change the call to ereg_replace to use preg_replace instead

Mark Baker
  • 209,507
  • 32
  • 346
  • 385
4

http://php.net/ereg_replace says:

Note: As of PHP 5.3.0, the regex extension is deprecated in favor of the PCRE extension.

Thus, preg_replace is in every way better choice. Note there are some differences in pattern syntax though.

Amadan
  • 191,408
  • 23
  • 240
  • 301
3

IIRC they suggest using the preg_ functions instead (in this case, preg_replace).

Wevah
  • 28,182
  • 7
  • 83
  • 72
3

Here is more information regarding replacing ereg_replace with preg_replace

Darko Kenda
  • 4,781
  • 1
  • 28
  • 31