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
{
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) {
+++ /dev/null
---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