1--TEST--
2Test glob() function: usage variations
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) != 'WIN') {
6    die('skip.. only for Windows');
7}
8?>
9--FILE--
10<?php
11echo "*** Testing glob() : usage variations ***\n";
12
13$file_path = __DIR__;
14
15// temp dir created
16//mkdir("$file_path/glob_variation");
17mkdir("$file_path/glob_variation私はガラスを食べられます");
18mkdir("$file_path/glob_variation私はガラスを食べられます/wonder");
19
20// temp files created
21$fp = fopen("$file_path/glob_variation私はガラスを食べられます/wonder12345", "w");
22fclose($fp);
23$fp = fopen("$file_path/glob_variation私はガラスを食べられます/wonder;123456", "w");
24fclose($fp);
25
26$patterns = array (
27  "$file_path/glob_variation私はガラスを食べられます/*der*",
28  "$file_path/glob_variation私はガラスを食べられます/?onder*",
29  "$file_path/glob_variation私はガラスを食べられます/w*der?*",
30  "$file_path/glob_variation私はガラスを食べられます/*der5",
31  "$file_path/glob_variation私はガラスを食べられます/??onder*",
32  "$file_path/glob_variation私はガラスを食べられます/***der***",
33  "$file_path/glob_variation私はガラスを食べられます/++onder*",
34  "$file_path/glob_variation私はガラスを食べられます/WONDER5\0",
35  '$file_path/glob_variation私はガラスを食べられます/wonder5',
36  "$file_path/glob_variation私はガラスを食べられます/?wonder?",
37  "$file_path/glob_variation私はガラスを食べられます/wonder?",
38  TRUE  // boolean true
39);
40$counter = 1;
41/* loop through $patterns to match each $pattern with the files created
42   using glob() */
43foreach($patterns as $pattern) {
44  echo "\n-- Iteration $counter --\n";
45  try {
46    var_dump( glob($pattern) );  // default arguments
47    var_dump( glob($pattern, GLOB_MARK) );
48    var_dump( glob($pattern, GLOB_NOSORT) );
49    var_dump( glob($pattern, GLOB_NOCHECK) );
50    var_dump( glob($pattern, GLOB_NOESCAPE) );
51    var_dump( glob($pattern, GLOB_ERR) );
52  } catch (Error $e) {
53    echo $e->getMessage(), "\n";
54  }
55  $counter++;
56}
57
58echo "\n*** Testing glob() with pattern within braces ***\n";
59var_dump( glob("$file_path/glob_variation私はガラスを食べられます/*{5}", GLOB_BRACE) );
60
61// delete temp files and dir
62unlink("$file_path/glob_variation私はガラスを食べられます/wonder12345");
63unlink("$file_path/glob_variation私はガラスを食べられます/wonder;123456");
64rmdir("$file_path/glob_variation私はガラスを食べられます/wonder");
65rmdir("$file_path/glob_variation私はガラスを食べられます");
66
67echo "\n*** Testing glob() on directories ***\n";
68// temp dir created to check for pattern matching the sub dir created in it
69mkdir("$file_path/glob_variation私はガラスを食べられます/wonder1/wonder2", 0777, true);
70
71$counter = 1;
72/* loop through $patterns to match each $pattern with the directories created
73   using glob() */
74foreach($patterns as $pattern) {
75  echo "-- Iteration $counter --\n";
76  try {
77    var_dump( glob($pattern, GLOB_ONLYDIR) );
78  } catch (Error $e) {
79    echo $e->getMessage(), "\n";
80  }
81  $counter++;
82}
83
84echo "Done\n";
85?>
86--CLEAN--
87<?php
88$file_path = __DIR__;
89rmdir("$file_path/glob_variation私はガラスを食べられます/wonder1/wonder2");
90rmdir("$file_path/glob_variation私はガラスを食べられます/wonder1/");
91rmdir("$file_path/glob_variation私はガラスを食べられます/");
92?>
93--EXPECTF--
94*** Testing glob() : usage variations ***
95
96-- Iteration 1 --
97array(3) {
98  [0]=>
99  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
100  [1]=>
101  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
102  [2]=>
103  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
104}
105array(3) {
106  [0]=>
107  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
108  [1]=>
109  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
110  [2]=>
111  string(%d) "%s/glob_variation私はガラスを食べられます/wonder\"
112}
113array(3) {
114  [0]=>
115  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
116  [1]=>
117  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
118  [2]=>
119  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
120}
121array(3) {
122  [0]=>
123  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
124  [1]=>
125  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
126  [2]=>
127  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
128}
129array(3) {
130  [0]=>
131  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
132  [1]=>
133  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
134  [2]=>
135  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
136}
137array(3) {
138  [0]=>
139  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
140  [1]=>
141  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
142  [2]=>
143  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
144}
145
146-- Iteration 2 --
147array(3) {
148  [0]=>
149  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
150  [1]=>
151  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
152  [2]=>
153  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
154}
155array(3) {
156  [0]=>
157  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
158  [1]=>
159  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
160  [2]=>
161  string(%d) "%s/glob_variation私はガラスを食べられます/wonder\"
162}
163array(3) {
164  [0]=>
165  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
166  [1]=>
167  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
168  [2]=>
169  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
170}
171array(3) {
172  [0]=>
173  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
174  [1]=>
175  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
176  [2]=>
177  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
178}
179array(3) {
180  [0]=>
181  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
182  [1]=>
183  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
184  [2]=>
185  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
186}
187array(3) {
188  [0]=>
189  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
190  [1]=>
191  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
192  [2]=>
193  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
194}
195
196-- Iteration 3 --
197array(2) {
198  [0]=>
199  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
200  [1]=>
201  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
202}
203array(2) {
204  [0]=>
205  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
206  [1]=>
207  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
208}
209array(2) {
210  [0]=>
211  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
212  [1]=>
213  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
214}
215array(2) {
216  [0]=>
217  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
218  [1]=>
219  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
220}
221array(2) {
222  [0]=>
223  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
224  [1]=>
225  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
226}
227array(2) {
228  [0]=>
229  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
230  [1]=>
231  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
232}
233
234-- Iteration 4 --
235array(0) {
236}
237array(0) {
238}
239array(0) {
240}
241array(1) {
242  [0]=>
243  string(%d) "%s/glob_variation私はガラスを食べられます/*der5"
244}
245array(0) {
246}
247array(0) {
248}
249
250-- Iteration 5 --
251array(0) {
252}
253array(0) {
254}
255array(0) {
256}
257array(1) {
258  [0]=>
259  string(%d) "%s/glob_variation私はガラスを食べられます/??onder*"
260}
261array(0) {
262}
263array(0) {
264}
265
266-- Iteration 6 --
267array(3) {
268  [0]=>
269  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
270  [1]=>
271  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
272  [2]=>
273  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
274}
275array(3) {
276  [0]=>
277  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
278  [1]=>
279  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
280  [2]=>
281  string(%d) "%s/glob_variation私はガラスを食べられます/wonder\"
282}
283array(3) {
284  [0]=>
285  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
286  [1]=>
287  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
288  [2]=>
289  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
290}
291array(3) {
292  [0]=>
293  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
294  [1]=>
295  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
296  [2]=>
297  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
298}
299array(3) {
300  [0]=>
301  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
302  [1]=>
303  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
304  [2]=>
305  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
306}
307array(3) {
308  [0]=>
309  string(%d) "%s/glob_variation私はガラスを食べられます/wonder"
310  [1]=>
311  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
312  [2]=>
313  string(%d) "%s/glob_variation私はガラスを食べられます/wonder;123456"
314}
315
316-- Iteration 7 --
317array(0) {
318}
319array(0) {
320}
321array(0) {
322}
323array(1) {
324  [0]=>
325  string(%d) "%s/glob_variation私はガラスを食べられます/++onder*"
326}
327array(0) {
328}
329array(0) {
330}
331
332-- Iteration 8 --
333glob(): Argument #1 ($pattern) must not contain any null bytes
334
335-- Iteration 9 --
336array(0) {
337}
338array(0) {
339}
340array(0) {
341}
342array(1) {
343  [0]=>
344  string(%d) "$file_path/glob_variation私はガラスを食べられます/wonder5"
345}
346array(0) {
347}
348array(0) {
349}
350
351-- Iteration 10 --
352array(0) {
353}
354array(0) {
355}
356array(0) {
357}
358array(1) {
359  [0]=>
360  string(%d) "%s/glob_variation私はガラスを食べられます/?wonder?"
361}
362array(0) {
363}
364array(0) {
365}
366
367-- Iteration 11 --
368array(0) {
369}
370array(0) {
371}
372array(0) {
373}
374array(1) {
375  [0]=>
376  string(%d) "%s/glob_variation私はガラスを食べられます/wonder?"
377}
378array(0) {
379}
380array(0) {
381}
382
383-- Iteration 12 --
384array(0) {
385}
386array(0) {
387}
388array(0) {
389}
390array(1) {
391  [0]=>
392  string(%d) "1"
393}
394array(0) {
395}
396array(0) {
397}
398
399*** Testing glob() with pattern within braces ***
400array(1) {
401  [0]=>
402  string(%d) "%s/glob_variation私はガラスを食べられます/wonder12345"
403}
404
405*** Testing glob() on directories ***
406-- Iteration 1 --
407array(1) {
408  [0]=>
409  string(%d) "%s/glob_variation私はガラスを食べられます/wonder1"
410}
411-- Iteration 2 --
412array(1) {
413  [0]=>
414  string(%d) "%s/glob_variation私はガラスを食べられます/wonder1"
415}
416-- Iteration 3 --
417array(1) {
418  [0]=>
419  string(%d) "%s/glob_variation私はガラスを食べられます/wonder1"
420}
421-- Iteration 4 --
422array(0) {
423}
424-- Iteration 5 --
425array(0) {
426}
427-- Iteration 6 --
428array(1) {
429  [0]=>
430  string(%d) "%s/glob_variation私はガラスを食べられます/wonder1"
431}
432-- Iteration 7 --
433array(0) {
434}
435-- Iteration 8 --
436glob(): Argument #1 ($pattern) must not contain any null bytes
437-- Iteration 9 --
438array(0) {
439}
440-- Iteration 10 --
441array(0) {
442}
443-- Iteration 11 --
444array(1) {
445  [0]=>
446  string(%d) "%s/glob_variation私はガラスを食べられます/wonder1"
447}
448-- Iteration 12 --
449array(0) {
450}
451Done
452