$list = array_filter(array("$node.png", "$node.jpg", "$node.gif"), 'file_exists');
if (!$img = array_shift($list)) {
$img = 'RANDOM.png';
}
Альтернативы:
$list = scandir(".");
$list = preg_grep("#".preg_quote($node,'#')."\.(jpg|png|gif)$#", $list);
Возвращает список имен файлов, начинающихся с $ node и суффикса .jpg, .png или .gif.
Если в каталоге много записей, возможно, быстрее будет сначала использовать glob ():
$list = glob("$node.*"); // take care to escape $node here
$list = preg_grep("#".preg_quote($node,'#')."\.(jpg|png|gif)$#");
preg_grep()
также можно заменить на
$list = array_intersect($list, array("$node.png", "$node.jpg", "$node.gif"));
Или с петлей:
$img = null;
foreach(array('png','jpg','gif') as $ext) {
if (!file_exists("$node.$ext")) continue;
$img = "$node.$ext"; break;
}
$img = $img ? $img : "RANDOM.png";