Browse Source
- Fix Bug #45923 (mb_st[r]ripos() offset not handled correctly)
- Fix Bug #45923 (mb_st[r]ripos() offset not handled correctly)
# test still fails because of the difference of str[r]pos() behavior between 5.3 and 6.0.experimental/first_unicode_implementation
4 changed files with 237 additions and 17 deletions
-
2ext/mbstring/libmbfl/mbfl/mbfilter.c
-
48ext/mbstring/mbstring.c
-
2ext/mbstring/mbstring.h
-
202ext/mbstring/tests/bug45923.phpt
@ -0,0 +1,202 @@ |
|||
--TEST-- |
|||
Bug #45923 (mb_st[r]ripos() offset not handled correctly) |
|||
--SKIPIF-- |
|||
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> |
|||
--INI-- |
|||
mbstring.internal_encoding=UTF-8 |
|||
--FILE-- |
|||
<?php |
|||
var_dump(strpos("abc abc abc", "abc", 0)); |
|||
var_dump(strpos("abc abc abc", "abc", 3)); |
|||
var_dump(strpos("abc abc abc", "abc", 6)); |
|||
var_dump(strpos("abc abc abc", "abc", 9)); |
|||
var_dump(strpos("abc abc abc", "abc", 11)); |
|||
var_dump(strpos("abc abc abc", "abc", 12)); |
|||
var_dump(strpos("abc abc abc", "abc", -1)); |
|||
var_dump(strpos("abc abc abc", "abc", -3)); |
|||
var_dump(strpos("abc abc abc", "abc", -6)); |
|||
|
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 0)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 3)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 6)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 9)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 11)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", 12)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", -1)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", -3)); |
|||
var_dump(mb_strpos("●○◆ ●○◆ ●○◆", "●○◆", -6)); |
|||
|
|||
var_dump(stripos("abc abc abc", "abc", 0)); |
|||
var_dump(stripos("abc abc abc", "abc", 3)); |
|||
var_dump(stripos("abc abc abc", "abc", 6)); |
|||
var_dump(stripos("abc abc abc", "abc", 9)); |
|||
var_dump(stripos("abc abc abc", "abc", 11)); |
|||
var_dump(stripos("abc abc abc", "abc", 12)); |
|||
var_dump(stripos("abc abc abc", "abc", -1)); |
|||
var_dump(stripos("abc abc abc", "abc", -3)); |
|||
var_dump(stripos("abc abc abc", "abc", -6)); |
|||
|
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 0)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 3)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 6)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 9)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 11)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", 12)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", -1)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", -3)); |
|||
var_dump(mb_stripos("●○◆ ●○◆ ●○◆", "●○◆", -6)); |
|||
|
|||
var_dump(strrpos("abc abc abc", "abc", 0)); |
|||
var_dump(strrpos("abc abc abc", "abc", 3)); |
|||
var_dump(strrpos("abc abc abc", "abc", 6)); |
|||
var_dump(strrpos("abc abc abc", "abc", 9)); |
|||
var_dump(strrpos("abc abc abc", "abc", 11)); |
|||
var_dump(strrpos("abc abc abc", "abc", 12)); |
|||
var_dump(strrpos("abc abc abc", "abc", -1)); |
|||
var_dump(strrpos("abc abc abc", "abc", -3)); |
|||
var_dump(strrpos("abc abc abc", "abc", -6)); |
|||
|
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 0)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 3)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 6)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 9)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 11)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", 12)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", -1)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", -3)); |
|||
var_dump(mb_strrpos("●○◆ ●○◆ ●○◆", "●○◆", -6)); |
|||
|
|||
var_dump(strripos("abc abc abc", "abc", 0)); |
|||
var_dump(strripos("abc abc abc", "abc", 3)); |
|||
var_dump(strripos("abc abc abc", "abc", 6)); |
|||
var_dump(strripos("abc abc abc", "abc", 9)); |
|||
var_dump(strripos("abc abc abc", "abc", 11)); |
|||
var_dump(strripos("abc abc abc", "abc", 12)); |
|||
var_dump(strripos("abc abc abc", "abc", -1)); |
|||
var_dump(strripos("abc abc abc", "abc", -3)); |
|||
var_dump(strripos("abc abc abc", "abc", -6)); |
|||
|
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 0)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 3)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 6)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 9)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 11)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", 12)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", -1)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", -3)); |
|||
var_dump(mb_strripos("●○◆ ●○◆ ●○◆", "●○◆", -6)); |
|||
|
|||
?> |
|||
--EXPECTF-- |
|||
int(0) |
|||
int(4) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
int(0) |
|||
int(4) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: mb_strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_strpos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
int(0) |
|||
int(4) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
int(0) |
|||
int(4) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: mb_stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
|
|||
Warning: mb_stripos(): Offset not contained in string in %s on line %d |
|||
bool(false) |
|||
int(8) |
|||
int(8) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: strrpos(): Offset is greater than the length of haystack string in %s on line %d |
|||
bool(false) |
|||
int(8) |
|||
int(8) |
|||
int(4) |
|||
int(8) |
|||
int(8) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: mb_strrpos(): Offset is greater than the length of haystack string in %s on line %d |
|||
bool(false) |
|||
int(8) |
|||
int(8) |
|||
int(4) |
|||
int(8) |
|||
int(8) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: strripos(): Offset is greater than the length of haystack string in %s on line %d |
|||
bool(false) |
|||
int(8) |
|||
int(8) |
|||
int(4) |
|||
int(8) |
|||
int(8) |
|||
int(8) |
|||
bool(false) |
|||
bool(false) |
|||
|
|||
Warning: mb_strripos(): Offset is greater than the length of haystack string in %s on line %d |
|||
bool(false) |
|||
int(8) |
|||
int(8) |
|||
int(4) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue