From: Nikita Popov Date: Tue, 29 Jan 2019 11:40:01 +0000 (+0100) Subject: Remove 'e' modifier for mb_ereg_replace() X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52a9325328ca360b5ccf3c6efc2de3f7c53c5b58;p=php Remove 'e' modifier for mb_ereg_replace() This was deprecated in PHP 7.1 through https://wiki.php.net/rfc/deprecate_mb_ereg_replace_eval_option. --- diff --git a/UPGRADING b/UPGRADING index 9333a94dd7..1dfd9dab0d 100644 --- a/UPGRADING +++ b/UPGRADING @@ -72,6 +72,9 @@ PHP 8.0 UPGRADE NOTES * mbereg_search_getpos() -> mb_ereg_search_getpos() * mbereg_search_setpos() -> mb_ereg_search_setpos() + . The 'e' modifier for mb_ereg_replace() has been removed. + mb_ereg_replace_callback() should be used instead. + - SPL: . SplFileObject::fgetss() has been removed. diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index eb3cf3c686..ab5537e933 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -1043,7 +1043,8 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp } } if (eval && !is_callable) { - php_error_docref(NULL, E_DEPRECATED, "The 'e' option is deprecated, use mb_ereg_replace_callback instead"); + php_error_docref(NULL, E_WARNING, "The 'e' option is no longer supported, use mb_ereg_replace_callback instead"); + RETURN_FALSE; } if (Z_TYPE_P(arg_pattern_zval) == IS_STRING) { arg_pattern = Z_STRVAL_P(arg_pattern_zval); diff --git a/ext/mbstring/tests/bug43301.phpt b/ext/mbstring/tests/bug43301.phpt deleted file mode 100644 index 6da3dd6bbe..0000000000 --- a/ext/mbstring/tests/bug43301.phpt +++ /dev/null @@ -1,33 +0,0 @@ ---TEST-- -Bug #43301 (mb_ereg*_replace() crashes when replacement string is invalid PHP expression and 'e' option is used) ---SKIPIF-- - ---FILE-- - ---EXPECTF-- -Deprecated: mb_ereg_replace(): The 'e' option is deprecated, use mb_ereg_replace_callback instead in %s%ebug43301.php on line %d - -Fatal error: Uncaught ParseError: syntax error, unexpected '1' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' in %sbug43301.php(%d) : mbregex replace:1 -Stack trace: -#0 %sbug43301.php(%d): mb_ereg_replace('hello', '$1', 'hello, I have g...', 'e') -#1 {main} - -Next Error: Failed evaluating code: -$1 in %sbug43301.php:%d -Stack trace: -#0 %sbug43301.php(%d): mb_ereg_replace('hello', '$1', 'hello, I have g...', 'e') -#1 {main} - thrown in %sbug43301.php on line %d diff --git a/ext/mbstring/tests/bug72164.phpt b/ext/mbstring/tests/bug72164.phpt index 018754e335..f90fe89938 100644 --- a/ext/mbstring/tests/bug72164.phpt +++ b/ext/mbstring/tests/bug72164.phpt @@ -14,5 +14,5 @@ $var8 = mb_ereg_replace($var2,$var3,$var3,$var0); var_dump($var8); ?> --EXPECTF-- -Deprecated: mb_ereg_replace(): The 'e' option is deprecated, use mb_ereg_replace_callback instead in %s%ebug72164.php on line %d -string(0) "" +Warning: mb_ereg_replace(): The 'e' option is no longer supported, use mb_ereg_replace_callback instead in %s on line %d +bool(false)