[php]fnmatch

PHP의 fnmatch 함수

fnmatch 함수는 Shell 패턴을 사용하여 문자열이 패턴과 일치하는지 여부를 확인하는데 사용됩니다. Shell 패턴은 와일드카드(*)와 물음표(?)를 사용하여 문자열을 일치시킬 패턴을 지정합니다.

fnmatch 함수의 사용 예시:

$pattern = 'file*.txt';
$filename = 'file123.txt';

if (fnmatch($pattern, $filename)) {
    echo "Filename matches the pattern.";
} else {
    echo "Filename does not match the pattern.";
}

다른 함수와 함께 사용하는 예시:

  1. glob 함수와 함께 사용하기 (파일 목록 필터링):
$pattern = '*.txt';
$files = glob('*.*');

foreach ($files as $file) {
    if (fnmatch($pattern, $file)) {
        echo "Matching file: $file" . PHP_EOL;
    }
}
  1. array_filter 함수와 함께 사용하기 (배열 요소 필터링):
$pattern = 'image*';
$files = ['image1.png', 'file.txt', 'image2.jpg', 'document.pdf'];

$filteredFiles = array_filter($files, function ($file) use ($pattern) {
    return fnmatch($pattern, $file);
});

print_r($filteredFiles);

조건문과 반복문과 함께 사용하는 예시:

$pattern = 'file*';
$files = ['file1.txt', 'file2.jpg', 'document.docx'];

foreach ($files as $file) {
    if (fnmatch($pattern, $file)) {
        echo "$file matches the pattern." . PHP_EOL;
    } else {
        echo "$file does not match the pattern." . PHP_EOL;
    }
}

성능 향상을 위한 팁:

  1. fnmatch 함수는 Shell 패턴을 사용하여 문자열을 일치시키기 때문에 복잡한 패턴을 사용할 경우 성능이 저하될 수 있습니다. 가능하면 간단하고 빠른 패턴을 사용하여 문자열 일치를 처리하는 것이 좋습니다.

  2. fnmatch 함수를 반복문 내에서 반복적으로 사용하는 경우, 필요한 경우 패턴 매치 결과를 변수에 저장하여 중복 호출을 최소화하는 것이 성능에 도움이 됩니다.


게시됨

카테고리

,

작성자