Вопрос по php – PHP-файл с несколькими расширениями файлов

44

Вот мой текущий код:

$files = glob("*.jpg");

Это отлично работает. Тем не менее, я хочу перечислить другие типы изображений, такие как .png, gif и т. Д.

Могу ли я получить помощь, чтобы изменить приведенный выше код, чтобы он заработал. Я пробовал следующее безуспешно:

$files = glob("*.jpg","*.png","*.gif");

$files = glob("*.jpg,*.png,*.gif);

И другие варианты ...

Ваш Ответ

2   ответа
102
$files = glob("*.{jpg,png,gif}", GLOB_BRACE);
@ hidden-username это не работает. кажется, что он получает только последний [] из каждой группы, поэтому*.[gG],*.[gG],*.[fF]Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded$files = glob("*.{[jJ][pP][gG],[pP][nN][gG],[gG][iI][fF]}", GLOB_BRACE);
Еще один момент, о котором следует быть осторожным: Из официальных документов PHP: Примечание. Флаг GLOB_BRACE недоступен в некоторых системах, отличных от GNU, таких как Solaris. Таким образом, в зависимости от используемой серверной среды, вы можете не использовать GLOB_BRACE.
0

$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)

При этом вы можете создать массив всех расширений, которые вы ищете, не беспокоясь о неправильном использовании регистра. Надеюсь, поможет

Похожие вопросы