summaryrefslogtreecommitdiff
path: root/ext/mbstring/tests/mb_strpos_invalid_offset.phpt
blob: 3e2ea65e9a5a431f902d9199dfad1c33e8b74325 (plain)
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