1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
--TEST--
mb_strpos() with invalid offsets
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
--FILE--
<?php
ini_set('include_path','.');
include_once('common.inc');
mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
// Test string
$string = '0123この文字列は日本語です。UTF-8を使っています。0123日本語は面倒臭い。';
$slen = mb_strlen($string);
echo "String len: $slen\n";
print ("== INVALID OFFSET ==\n");
try {
var_dump( mb_strpos($string, '日本語', 44));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump( mb_strpos($string, '日本語', 50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump( mb_strpos($string, '0', 50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, 3, 50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, 0, 50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, '日本語', -50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, '0', -50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, 3, -50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, 0, -50));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
try {
var_dump(mb_strpos($string, 0, -44));
} catch (\ValueError $e) {
echo $e->getMessage() . \PHP_EOL;
}
?>
--EXPECT--
String len: 42
== INVALID OFFSET ==
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
Offset not contained in string
|