1--TEST--
2explode() function
3--INI--
4error_reporting=2047
5--SKIPIF--
6<?php
7if (PHP_INT_SIZE != 8) die("skip this test is for 64-bit only");
8?>
9--FILE--
10<?php
11/* From http://bugs.php.net/19865 */
12echo var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE);
13echo "\n";
14echo md5(var_export(explode("\1", "a". chr(1). "b". chr(0). "d" . chr(1) . "f" . chr(1). "1" . chr(1) . "d"), TRUE));
15echo "\n";
16
17try {
18    var_dump(explode("", ""));
19} catch (\ValueError $e) {
20    echo $e->getMessage() . "\n";
21}
22try {
23    var_dump(explode("", NULL));
24} catch (\ValueError $e) {
25    echo $e->getMessage() . "\n";
26}
27try {
28    var_dump(explode(NULL, ""));
29} catch (\ValueError $e) {
30    echo $e->getMessage() . "\n";
31}
32
33var_dump(explode("a", ""));
34var_dump(explode("a", "a"));
35var_dump(explode("a", NULL));
36try {
37    var_dump(explode(NULL, "a"));
38} catch (\ValueError $e) {
39    echo $e->getMessage() . "\n";
40}
41var_dump(explode("abc", "acb"));
42var_dump(explode("somestring", "otherstring"));
43var_dump(explode("somestring", "otherstring", -1));
44var_dump(explode("a", "aaaaaa"));
45var_dump(explode("==", str_repeat("-=".ord(0)."=-", 10)));
46var_dump(explode("=", str_repeat("-=".ord(0)."=-", 10)));
47//////////////////////////////////////
48var_dump(explode(":","a lazy dog:jumps:over:",-1));
49var_dump(explode(":","a lazy dog:jumps:over", -1));
50var_dump(explode(":","a lazy dog:jumps:over", -2));
51var_dump(explode(":","a lazy dog:jumps:over:",-4));
52var_dump(explode(":","a lazy dog:jumps:over:",-40000000000000));
53var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-1));
54var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-2));
55?>
56--EXPECT--
57array (
58  0 => 'a',
59  1 => 'b' . "\0" . 'd',
60  2 => 'f',
61  3 => '1',
62  4 => 'd',
63)
64d6bee42a771449205344c0938ad4f035
65explode(): Argument #1 ($separator) cannot be empty
66explode(): Argument #1 ($separator) cannot be empty
67explode(): Argument #1 ($separator) cannot be empty
68array(1) {
69  [0]=>
70  string(0) ""
71}
72array(2) {
73  [0]=>
74  string(0) ""
75  [1]=>
76  string(0) ""
77}
78array(1) {
79  [0]=>
80  string(0) ""
81}
82explode(): Argument #1 ($separator) cannot be empty
83array(1) {
84  [0]=>
85  string(3) "acb"
86}
87array(1) {
88  [0]=>
89  string(11) "otherstring"
90}
91array(0) {
92}
93array(7) {
94  [0]=>
95  string(0) ""
96  [1]=>
97  string(0) ""
98  [2]=>
99  string(0) ""
100  [3]=>
101  string(0) ""
102  [4]=>
103  string(0) ""
104  [5]=>
105  string(0) ""
106  [6]=>
107  string(0) ""
108}
109array(1) {
110  [0]=>
111  string(60) "-=48=--=48=--=48=--=48=--=48=--=48=--=48=--=48=--=48=--=48=-"
112}
113array(21) {
114  [0]=>
115  string(1) "-"
116  [1]=>
117  string(2) "48"
118  [2]=>
119  string(2) "--"
120  [3]=>
121  string(2) "48"
122  [4]=>
123  string(2) "--"
124  [5]=>
125  string(2) "48"
126  [6]=>
127  string(2) "--"
128  [7]=>
129  string(2) "48"
130  [8]=>
131  string(2) "--"
132  [9]=>
133  string(2) "48"
134  [10]=>
135  string(2) "--"
136  [11]=>
137  string(2) "48"
138  [12]=>
139  string(2) "--"
140  [13]=>
141  string(2) "48"
142  [14]=>
143  string(2) "--"
144  [15]=>
145  string(2) "48"
146  [16]=>
147  string(2) "--"
148  [17]=>
149  string(2) "48"
150  [18]=>
151  string(2) "--"
152  [19]=>
153  string(2) "48"
154  [20]=>
155  string(1) "-"
156}
157array(3) {
158  [0]=>
159  string(10) "a lazy dog"
160  [1]=>
161  string(5) "jumps"
162  [2]=>
163  string(4) "over"
164}
165array(2) {
166  [0]=>
167  string(10) "a lazy dog"
168  [1]=>
169  string(5) "jumps"
170}
171array(1) {
172  [0]=>
173  string(10) "a lazy dog"
174}
175array(0) {
176}
177array(0) {
178}
179array(2) {
180  [0]=>
181  string(10) "a lazy dog"
182  [1]=>
183  string(11) "jumps::over"
184}
185array(1) {
186  [0]=>
187  string(10) "a lazy dog"
188}
189