]> granicus.if.org Git - php/commitdiff
Remove deprecated behaviour of passing encoding as third parameter in mb_strrpos()
authorGeorge Peter Banyard <girgias@php.net>
Fri, 13 Dec 2019 19:09:42 +0000 (20:09 +0100)
committerGeorge Peter Banyard <girgias@php.net>
Fri, 13 Dec 2019 21:03:27 +0000 (22:03 +0100)
Merged GH-5011

UPGRADING
ext/mbstring/mbstring.c
ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt [deleted file]
ext/mbstring/tests/mb_strrpos_variation5.phpt [deleted file]

index 6ebe7c29af9255d02c35289e04e6d342bd602552..0a6ad2a8c947746f2e08ceb60a4682d115005e30 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -211,6 +211,8 @@ PHP 8.0 UPGRADE NOTES
     restored with an explicit call to chr().
   . The $is_hex parameter, which was not used internally, has been removed from
     mb_decode_numericentity().
+  . The legacy behaviour of passing the encoding as the third argument instead of an offset for the mb_strrpos
+    function has been removed, provide an explicit 0 offset with the encoding as the fourth argument.
 
 - PCRE:
   . When passing invalid escape sequences they are no longer interpreted as
index 7741629702b0ce9610a6121018bbe0d5868ec7c7..7f92aa2bd00ebb7161b789316b6e4d9b01d484f2 100644 (file)
@@ -2146,45 +2146,12 @@ PHP_FUNCTION(mb_strrpos)
 {
        mbfl_string haystack, needle;
        zend_string *enc_name = NULL;
-       zval *zoffset = NULL;
        zend_long offset = 0, n;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|zS", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &zoffset, &enc_name) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|lS", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &enc_name) == FAILURE) {
                return;
        }
 
-       if (zoffset) {
-               if (Z_TYPE_P(zoffset) == IS_STRING) {
-                       switch (Z_STRVAL_P(zoffset)[0]) {
-                               case '0':
-                               case '1':
-                               case '2':
-                               case '3':
-                               case '4':
-                               case '5':
-                               case '6':
-                               case '7':
-                               case '8':
-                               case '9':
-                               case ' ':
-                               case '-':
-                               case '.':
-                                       convert_to_long_ex(zoffset);
-                                       offset = Z_LVAL_P(zoffset);
-                                       break;
-                               default :
-                                       enc_name = Z_STR_P(zoffset);
-                                       php_error_docref(NULL, E_DEPRECATED,
-                                               "Passing the encoding as third parameter is deprecated. "
-                                               "Use an explicit zero offset");
-                                       break;
-                       }
-               } else {
-                       convert_to_long_ex(zoffset);
-                       offset = Z_LVAL_P(zoffset);
-               }
-       }
-
        haystack.no_language = needle.no_language = MBSTRG(language);
        haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
        if (!haystack.encoding) {
diff --git a/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt b/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt
deleted file mode 100644 (file)
index 66ccd00..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-Passing encoding as 3rd param to mb_strrpos (legacy)
---SKIPIF--
-<?php if(!extension_loaded('mbstring')) die('skip mbstring not loaded'); ?>
---FILE--
-<?php
-
-mb_internal_encoding('UTF-16');
-var_dump(mb_strrpos("abc abc abc", "abc", "UTF-8"));
-
-?>
---EXPECTF--
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(8)
diff --git a/ext/mbstring/tests/mb_strrpos_variation5.phpt b/ext/mbstring/tests/mb_strrpos_variation5.phpt
deleted file mode 100644 (file)
index 6b7b75e..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
---TEST--
-Test mb_strrpos() function : usage variations - pass encoding as third argument (deprecated behaviour)
---SKIPIF--
-<?php
-extension_loaded('mbstring') or die('skip');
-function_exists('mb_strrpos') or die("skip mb_strrpos() is not available in this build");
-?>
---FILE--
-<?php
-/* Prototype  : int mb_strrpos(string $haystack, string $needle [, int $offset [, string $encoding]])
- * Description: Find position of last occurrence of a string within another
- * Source code: ext/mbstring/mbstring.c
- */
-
-/*
- * Testing deprecated behaviour where third argument can be $encoding
- */
-
-echo "*** Testing mb_strrpos() : usage variations ***\n";
-
-$string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
-$needle_mb = base64_decode('44CC');
-
-$stringh = <<<END
-utf-8
-END;
-
-$inputs = array('Double Quoted String' => "utf-8",
-                'Single Quoted String' => 'utf-8',
-                'Heredoc' => $stringh);
-foreach ($inputs as $type => $input) {
-       echo "\n-- $type --\n";
-       echo "-- With fourth encoding argument --\n";
-       var_dump(mb_strrpos($string_mb, $needle_mb, $input, 'utf-8'));
-       echo "-- Without fourth encoding argument --\n";
-       var_dump(mb_strrpos($string_mb, $needle_mb, $input));
-}
-
-echo "Done";
-?>
---EXPECTF--
-*** Testing mb_strrpos() : usage variations ***
-
--- Double Quoted String --
--- With fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
--- Without fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
-
--- Single Quoted String --
--- With fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
--- Without fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
-
--- Heredoc --
--- With fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
--- Without fourth encoding argument --
-
-Deprecated: mb_strrpos(): Passing the encoding as third parameter is deprecated. Use an explicit zero offset in %s on line %d
-int(20)
-Done