]> granicus.if.org Git - php/commitdiff
Implement RFC "Deprecate mb_ereg_replace eval option"
authorChristoph M. Becker <cmbecker69@gmx.de>
Sat, 9 Jul 2016 14:19:16 +0000 (16:19 +0200)
committerJulien Pauli <jpauli@php.net>
Mon, 11 Jul 2016 09:20:01 +0000 (11:20 +0200)
<https://wiki.php.net/rfc/deprecate_mb_ereg_replace_eval_option> has been
accepted, so we implement it.

NEWS
UPGRADING
ext/mbstring/php_mbregex.c
ext/mbstring/tests/bug43301.phpt
ext/mbstring/tests/bug72164.phpt

diff --git a/NEWS b/NEWS
index 232d345dffcc1372f666febd261b56ebd71fd6d4..c28a440c7eb24120bb6e0b0616102ac7ed097832 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,9 @@ PHP                                                                        NEWS
   . Fixed bug #71745 (FILTER_FLAG_NO_RES_RANGE does not cover whole 127.0.0.0/8
     range). (bugs dot php dot net at majkl578 dot cz)
 
+- Mbstring:
+  . Deprecated mb_ereg_replace() eval option. (Rouven Weßling, cmb)
+
 - PDO_pgsql:
   . Fixed bug #70313 (PDO statement fails to throw exception). (Matteo)
   . Fixed bug #72570 (Segmentation fault when binding parameters on a query
index 0362e1c80de662c7045bce603a582f3f86ffe3a4..8102506624910bde17837867a1964b23ce5800df 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -100,6 +100,8 @@ PHP 7.1 UPGRADE NOTES
 4. Deprecated Functionality
 ========================================
 
+- 'e' option of mb_ereg_replace() and mb_eregi_replace().
+
 ========================================
 5. Changed Functions
 ========================================
index 5af7eb15c654a5a93ee7e0fb2b7d0bc305fceba0..b427980430431cf5cfa3c3b476dd0a3f62db0cde 100644 (file)
@@ -855,6 +855,9 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
                        syntax = MBREX(regex_default_syntax);
                }
        }
+       if (eval && !is_callable) {
+               php_error_docref(NULL, E_DEPRECATED, "The 'e' option is deprecated, use mb_ereg_replace_callback instead");
+       }
        if (Z_TYPE_P(arg_pattern_zval) == IS_STRING) {
                arg_pattern = Z_STRVAL_P(arg_pattern_zval);
                arg_pattern_len = Z_STRLEN_P(arg_pattern_zval);
index 9c629ec38c46e114d5384516f35cb5d62e7e7893..f209bd75542c226060de7ead0c11ee57b95ed5de 100644 (file)
@@ -15,6 +15,8 @@ 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')
index bd58f7e5a513ab8e3b05f91d1955538ebf1cad17..8666447e7a9a6dc2f992caf2da2b19b54efd7347 100644 (file)
@@ -10,5 +10,6 @@ $var3 = NULL;
 $var8 = mbereg_replace($var2,$var3,$var3,$var0);
 var_dump($var8);
 ?>
---EXPECT--
+--EXPECTF--
+Deprecated: mbereg_replace(): The 'e' option is deprecated, use mb_ereg_replace_callback instead in %s%ebug72164.php on line %d
 string(0) ""