반응형
여러 파일 확장명을 나열하는 PHP 파일
현재 코드는 다음과 같습니다.
$files = glob("*.jpg");
이 정도면 잘 됩니다.하지만 .png, gif 등 다른 이미지 타입을 나열하고 싶습니다.
위 코드를 수정해서 작동시킬 수 있도록 도와주실 수 있을까요?저는 다음을 시도해 보았지만 성공하지 못했습니다.
$files = glob("*.jpg","*.png","*.gif");
$files = glob("*.jpg,*.png,*.gif);
그리고 다른 변형들도...
$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
05 2021
이것은 단지 @Jeroen 답변의 확장일 뿐입니다.
명심해야 할 것들
'플래그'가 중요합니다.
곱슬곱슬한 괄호를 사용하고 있으니 참고하시기 바랍니다.GLOB_BRACE
필요합니다.플래그가 없으면 빈 항목 배열을 얻을 수 있습니다.
$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
소팅
이렇게 하면 작성한 방식으로 파일을 정렬하는 데도 도움이 됩니다.
아래 정렬은 컬리 브래킷 내부의 확장 순서를 기준으로 합니다.
$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
xx.jpg
xx.jpg
xx.png
xx.gif
xx.gif
$files = glob("*.{gif,jpg,png}", GLOB_BRACE);
xx.gif
xx.gif
xx.jpg
xx.jpg
xx.png
+ 보너스
폴더가 없어도 파일을 모두 나열해야 하는 경우 이를 사용할 수 있습니다.
$files = glob("*.{*}", GLOB_BRACE);
GLOB_BRACE를 사용하는 것보다 훨씬 쉬운 솔루션을 찾았는데 대소문자를 구분하지 않습니다.
$files = array_filter(glob('path/*.*'), function ($filename) { return preg_match('/\.(jpe?g|png|gif)$/i', $filename); });
sort($files);
아니면 그냥 이렇게 할 수도 있습니다.
$files = preg_grep('/\.(jpe?g|png|gif)$/i', glob('path/*.*'));
sort($files);
내 돈 2센트만 줘요 여기 있는 사람들에게 도움이 되길 바라요
나의 2센트:
$availableImageFormats = [
"png",
"jpg",
"jpeg",
"gif"];
$searchDir = /*yourDir*/;
$imageExtensions = "{";
foreach ($availableImageFormats as $extension) {
$extensionChars = str_split($extension);
$rgxPartial = null;
foreach ($extensionChars as $char) {
$rgxPartial .= "[".strtoupper($char).strtolower($char)."]";
}
$rgxPartial .= ",";
$imageExtensions .= $rgxPartial;
};
$imageExtensions .= "}";
glob($searchDir."/*.".$imageExtensions, GLOB_BRACE)
이 기능을 사용하면 부적절한 사례 사용에 대한 걱정 없이 원하는 모든 확장 프로그램의 배열을 만들 수 있습니다.도움이 되길 바랍니다.
저는 단지 제 프로젝트를 위해 이것이 필요했습니다.배열에서 문자열로 변환기를 만들었습니다.
function whitelistToBrace($whitelist) {
$str = "{";
$whitelist = !empty($whitelist) ? $whitelist : ['*'];
foreach($whitelist as $extension) {
$str .= '*.' . strtolower($extension) . ',';
};
$str = substr($str, 0, -1) . '}';
return $str;
}
사용.
$whitelist = [
'png',
'jpg'
];
// glob('my/path/*.{*.png,*.jpg}', GLOB_BRACE);
$glob = glob('my/path/' . whitelistToBrace($whitelist), GLOB_BRACE);
print_r($glob);
언급URL : https://stackoverflow.com/questions/10591530/php-file-listing-multiple-file-extensions
반응형
'source' 카테고리의 다른 글
Python 가비지 수집기 설명서 (0) | 2023.09.06 |
---|---|
float:left; vs display:loat; vs display:loat-block; vs display:table-cell; (0) | 2023.09.06 |
Spring Boot Multiple Database : EntityManagerFactoryBuilder 유형의 한정된 빈 없음 (0) | 2023.09.06 |
두 날짜 객체의 시간 차이를 구하는 방법은? (0) | 2023.09.06 |
Http StaticInjectorError에 대한 공급자가 없습니다. (0) | 2023.09.01 |