]> granicus.if.org Git - php/commitdiff
Remove 'e' modifier for mb_ereg_replace()
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 29 Jan 2019 11:40:01 +0000 (12:40 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 29 Jan 2019 12:04:20 +0000 (13:04 +0100)
This was deprecated in PHP 7.1 through
https://wiki.php.net/rfc/deprecate_mb_ereg_replace_eval_option.

UPGRADING
ext/mbstring/php_mbregex.c
ext/mbstring/tests/bug43301.phpt [deleted file]
ext/mbstring/tests/bug72164.phpt

index 9333a94dd790f5abffc8690a6013f27ad970c27a..1dfd9dab0d1cc8c6e2f0a922126e4705be033766 100644 (file)
--- 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.
 
index eb3cf3c686fa56df00c4a061a85c51b46984664c..ab5537e9332575deb8748fac78fc074fd79efa68 100644 (file)
@@ -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 (file)
index 6da3dd6..0000000
+++ /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--
-<?php
-extension_loaded('mbstring') or die('skip mbstring not available');
-if (!function_exists('mb_ereg')) die('skip mbregex support not available');
-?>
---FILE--
-<?php
-
-$ptr = 'hello';
-
-$txt = <<<doc
-hello, I have got a cr*sh on you
-doc;
-
-echo mb_ereg_replace($ptr,'$1',$txt,'e');
-
-?>
---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
index 018754e335cbb1c4fdfb0b5ae6edfec199edb63f..f90fe89938d2f6ffe6e6271907d275677adb5b48 100644 (file)
@@ -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)