Как найти различные типы файлов по пути

Аватара пользователя сохраняется в ../wordpress/wp-content/uploads/ папка с именем и расширением в качестве ввода. То есть, если загружен файл PNG, расширение становится user_avatar0.pngв противном случае, если JPG загружен, он станет user_avatar0.jpg,
Я загружаю несколько пользовательских аватаров, используя для каждого цикла.

Это код, который я использовал для загрузки файла аватара:

$path="../wordpress/wp-content/uploads/";
$av=$path."user_avatar0.png|.jpg"; // if jpg exists loads jpg otherwise load png
<img src="'. $av .'"   height="200" width="200" border="0" >

Как выбрать файл из каталога, который содержит файлы разных расширений (jpg, png и т. Д.)?

1

Решение

Что вы пытались с умным .png|.jpg к сожалению не известный синтаксис. Это не будет интерпретироваться ни PHP, ни браузером, который анализирует HTML. В PHP нет функции, которая бы автоматически заполняла переменные пути путем расширения параметров оболочки ? . Там конечно glob(), но перемещение по всему каталогу для получения одного файла с расширением jpg / png было бы очень неэффективным.

Если у вас нет записи о том, что является расширением файла (вы могли бы запросить базу данных WP?), Вам придется просто проверить что-то вроде этого, предполагая, что jpg / png являются единственными возможностями:

$file = 'user_avatar0.';
$file .= file_exists($file.'jpg') ? 'jpg' : 'png';

Это объединяет базовое имя с jpg расширение, если есть совпадение, и возвращается к png если не. Если есть вероятность, что у пользователя вообще нет аватара, вам следует if-elseif-else вместо этого и по умолчанию для стандартного заполнителя, если оба file_exists проверки не пройдены. Вы также можете использовать realpath(), is_file() или же stream_resolve_include_path() проверить, существует ли файл; но логика остается прежней. Ходят слухи, что последний вариант будет самым быстрым, но в любом случае каждый из них кеширует свои результаты.

В любом случае, если вы продолжаете отображать аватары одних и тех же пользователей при повторяющихся загрузках страниц, вам может понадобиться сохранить результаты этих проверок в $_SESSION массив для устранения повторной и избыточной проверки. Я оставлю это для вас, чтобы сравнить PHP кеш файлов и кеш сессии.

1

Другие решения

Других решений пока нет …