|
| 1 | +--TEST-- |
| 2 | +grapheme_strrpos() and grapheme_strripos() find overlapping matches with negative offsets |
| 3 | +--EXTENSIONS-- |
| 4 | +intl |
| 5 | +--FILE-- |
| 6 | +<?php |
| 7 | +foreach (['a', "\u{00E9}", "e\u{0301}", "\u{1F600}"] as $grapheme) { |
| 8 | + foreach (['grapheme_strrpos', 'grapheme_strripos'] as $function) { |
| 9 | + $positions = []; |
| 10 | + foreach ([0, 1, -1, -2, -3] as $offset) { |
| 11 | + $positions[] = $function(str_repeat($grapheme, 3), str_repeat($grapheme, 2), $offset); |
| 12 | + } |
| 13 | + echo $function, ': ', implode(', ', $positions), "\n"; |
| 14 | + } |
| 15 | +} |
| 16 | + |
| 17 | +var_dump(grapheme_strripos("\u{00C9}\u{00E9}\u{00C9}", "\u{00E9}\u{00E9}", -1)); |
| 18 | +var_dump(grapheme_strrpos("\u{00E9}\u{00E9}x\u{00E9}\u{00E9}", "\u{00E9}\u{00E9}", -1)); |
| 19 | +var_dump(grapheme_strrpos("\u{00E9}\u{00E9}x\u{00E9}\u{00E9}", "\u{00E9}\u{00E9}", -3)); |
| 20 | +?> |
| 21 | +--EXPECT-- |
| 22 | +grapheme_strrpos: 1, 1, 1, 1, 0 |
| 23 | +grapheme_strripos: 1, 1, 1, 1, 0 |
| 24 | +grapheme_strrpos: 1, 1, 1, 1, 0 |
| 25 | +grapheme_strripos: 1, 1, 1, 1, 0 |
| 26 | +grapheme_strrpos: 1, 1, 1, 1, 0 |
| 27 | +grapheme_strripos: 1, 1, 1, 1, 0 |
| 28 | +grapheme_strrpos: 1, 1, 1, 1, 0 |
| 29 | +grapheme_strripos: 1, 1, 1, 1, 0 |
| 30 | +int(1) |
| 31 | +int(3) |
| 32 | +int(0) |
0 commit comments