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.";
}
다른 함수와 함께 사용하는 예시:
glob
함수와 함께 사용하기 (파일 목록 필터링):
$pattern = '*.txt';
$files = glob('*.*');
foreach ($files as $file) {
if (fnmatch($pattern, $file)) {
echo "Matching file: $file" . PHP_EOL;
}
}
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;
}
}
성능 향상을 위한 팁:
-
fnmatch
함수는 Shell 패턴을 사용하여 문자열을 일치시키기 때문에 복잡한 패턴을 사용할 경우 성능이 저하될 수 있습니다. 가능하면 간단하고 빠른 패턴을 사용하여 문자열 일치를 처리하는 것이 좋습니다. -
fnmatch
함수를 반복문 내에서 반복적으로 사용하는 경우, 필요한 경우 패턴 매치 결과를 변수에 저장하여 중복 호출을 최소화하는 것이 성능에 도움이 됩니다.