บทนำ
Stream wrapper glob:// พร้อมใช้งานใน PHP ทุกเวอร์ชันหลัง 5.3.0 ใช้ค้นหา pathnames ที่ตรงกับ pattern ที่กำหนด วัตถุประสงค์เดียวกันนี้ ทำได้โดยฟังก์ชันระบบไฟล์ของ PHP glob() ซึ่งปฏิบัติตามกฎของ libc glob()
พารามิเตอร์
อักขระพิเศษ
- * - จับคู่ศูนย์หรือหลายอักขระ
- ? - จับคู่อักขระเดียวเท่านั้น (อักขระใดก็ได้)
- [...] - จับคู่อักขระหนึ่งจากกลุ่มอักขระ หากอักขระแรกคือ ! จะจับคู่อักขระที่ไม่อยู่ในกลุ่ม
- \ - Escape อักขระถัดไป ยกเว้นเมื่อใช้ flag GLOB_NOESCAPE
Flag ที่ถูกต้อง
- GLOB_MARK - เพิ่มสแลช (หรือแบ็กสแลชใน Windows) ให้กับแต่ละไดเรกทอรีที่คืนค่า
- GLOB_NOSORT - คืนค่าไฟล์ตามลำดับในไดเรกทอรี (ไม่จัดเรียง) เมื่อไม่ใช้ flag นี้ pathnames จะถูกจัดเรียงตามตัวอักษร
- GLOB_NOCHECK - คืนค่า search pattern หากไม่พบไฟล์ที่ตรงกัน
- GLOB_NOESCAPE - Backslashes ไม่ quote metacharacters
- GLOB_BRACE - ขยาย {a,b,c} ให้จับคู่ 'a', 'b', หรือ 'c'
- GLOB_ONLYDIR - คืนค่าเฉพาะ directory entries ที่ตรงกับ pattern
- GLOB_ERR - หยุดเมื่อเกิดข้อผิดพลาดในการอ่าน (เช่นไดเรกทอรีที่อ่านไม่ได้) โดยค่าเริ่มต้นข้อผิดพลาดจะถูกละเลย
ตัวอย่าง
ใช้ฟังก์ชัน glob()
<?php foreach (glob("test/*.php") as $filename) { echo "$filename size " . filesize($filename) . "\n"; } ?>ใช้ glob:// stream wrapper
<?php $it = new DirectoryIterator("glob://test/*.php"); foreach($it as $f) { echo "File name: " . $f->getFilename() . " size: " . $f->getSize() . "\n"; } ?>ทั้งสองสคริปต์แสดงชื่อและขนาดของไฟล์ที่มีนามสกุล .php ในไดเรกทอรีย่อย test