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