@@ -142,6 +142,34 @@ var_dump(zend_test_is_string_marked_as_valid_utf8($string_concat));
142
142
$ string_concat = implode ('' , [1 , 1.0 , 'a ' ]);
143
143
var_dump (zend_test_is_string_marked_as_valid_utf8 ($ string_concat ));
144
144
145
+ echo "explode: \n" ;
146
+ $ string = 'můj žlutý kůň ' ;
147
+ $ firstByte = substr ('ů ' , 0 , 1 ); // byte present in $string, but itself it is not valid UTF-8
148
+ $ dumpUtf8ValidityArrFx = function (array $ strings ): void {
149
+ echo (implode (' ' , array_map (fn ($ v ) => zend_test_is_string_marked_as_valid_utf8 ($ v ) ? 'true ' : 'false ' , $ strings )) ?: 'empty ' ) . "\n" ;
150
+ };
151
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , '' ));
152
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string ));
153
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string . "\xff" ));
154
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string , 1 ));
155
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string . "\xff" , 1 ));
156
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string ));
157
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string . "\xff" ));
158
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string ));
159
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string . "\xff" ));
160
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string , -1 ));
161
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string . "\xff" , -1 ));
162
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string , -1 ));
163
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string . "\xff" , -1 ));
164
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string , -1 ));
165
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string . "\xff" , -1 ));
166
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string , -2 ));
167
+ $ dumpUtf8ValidityArrFx (explode ('ů ' , $ string . "\xff" , -2 ));
168
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string , -2 ));
169
+ $ dumpUtf8ValidityArrFx (explode ($ firstByte , $ string . "\xff" , -2 ));
170
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string , -2 ));
171
+ $ dumpUtf8ValidityArrFx (explode ("\xff" , $ string . "\xff" , -2 ));
172
+
145
173
?>
146
174
--EXPECT--
147
175
Empty strings:
@@ -199,3 +227,25 @@ bool(true)
199
227
bool(true)
200
228
bool(true)
201
229
bool(true)
230
+ explode:
231
+ false
232
+ true true true
233
+ false false false
234
+ true
235
+ false
236
+ false false false false false
237
+ false false false false false
238
+ false
239
+ false false
240
+ true true
241
+ false false
242
+ false false false false
243
+ false false false false
244
+ empty
245
+ false
246
+ true
247
+ false
248
+ false false false
249
+ false false false
250
+ empty
251
+ empty
0 commit comments