Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP glob:// 스트림 래퍼 완벽 가이드: 사용법과 플래그 정리

소개

glob:// 스트림 래퍼는 PHP 5.3.0 이후 모든 버전에서 사용할 수 있습니다. 이 래퍼는 지정된 패턴과 일치하는 경로명(pathname)을 찾는 역할을 합니다. 같은 목적으로 PHP의 파일 시스템 함수인 glob()이 있으며, 이 함수는 libc의 glob() 규칙을 따릅니다.

매개변수

특수 문자

  • * − 0개 이상의 임의의 문자와 일치합니다.
  • ? − 정확히 한 개의 문자(모든 문자)와 일치합니다.
  • [...] − 문자 그룹 중 하나의 문자와 일치합니다. 첫 번째 문자가 !이면 그룹에 포함되지 않는 임의의 문자와 일치합니다.
  • \ − 바로 뒤에 오는 문자를 이스케이프(escape)합니다. 단, GLOB_NOESCAPE 플래그가 사용된 경우에는 적용되지 않습니다.

사용 가능한 플래그

  • GLOB_MARK − 반환되는 각 디렉터리 끝에 슬래시(Windows에서는 백슬래시)를 추가합니다.
  • GLOB_NOSORT − 디렉터리에 나타나는 순서대로 파일을 반환합니다(정렬하지 않음). 이 플래그를 사용하지 않으면 경로명이 알파벳 순으로 정렬됩니다.
  • GLOB_NOCHECK − 패턴과 일치하는 파일이 없을 경우 검색 패턴 자체를 반환합니다.
  • GLOB_NOESCAPE − 백슬래시가 메타 문자를 이스케이프하지 않도록 합니다.
  • GLOB_BRACE − {a,b,c}를 확장하여 'a', 'b', 'c' 중 하나와 일치하도록 합니다.
  • GLOB_ONLYDIR − 패턴과 일치하는 디렉터리 항목만 반환합니다.
  • GLOB_ERR − 읽기 오류(읽을 수 없는 디렉터리 등)가 발생하면 중단합니다. 기본값은 오류를 무시하는 것입니다.

예제

glob() 함수 사용 예

<?php
foreach (glob("test/*.php") as $filename) {
    echo "$filename size " . filesize($filename) . " ";
}
?>

glob:// 스트림 래퍼 사용 예

<?php
$it = new DirectoryIterator("glob://test/*.php");
foreach($it as $f) {
    echo "File name: " . $f->getFilename() . " size: " . $f->getSize() . " ";
}
?>

위 두 스크립트 모두 test 하위 디렉터리에 있는 .php 확장자를 가진 파일들의 이름과 크기를 출력합니다. glob() 함수는 간단한 반복 처리에 적합하고, glob:// 스트림 래퍼는 DirectoryIterator와 함께 사용하여 객체 지향적인 방식으로 디렉터리를 탐색할 수 있다는 점이 차이입니다.