Читаем все файлы в массивы.
Натравливаем на них функцию array_diff
Удаляем то , что вернула функция.
spoiler$webp = glob('*.webp');
$jpg = glob('*.jpg');
$gif = glob('*.gif');
// …тут отрезаем у всех расширения, или далее используем array_udiff со своим коллбеком сравнения
$result = array_diff($webp, $jpg, $gif);
foreach $result as $file {
unlink($file.'.webp')
}
UPD:
// Читаем все файлы
$files = glob(__DIR__ . '/images/*.*');
// Фильтруем WEBP файлы в массив
$webp = array_filter($files, function ($f) {
return pathinfo($f, PATHINFO_EXTENSION) == 'webp';
});
// Фильтруем остальные картинки в другой массив
$other = array_filter($files, function ($f) {
$extensions = ['jpg', 'gif', 'png']; // Перечисляем, какие там еще файлы есть
return in_array(pathinfo($f, PATHINFO_EXTENSION), $extensions);
});
// В обоих массивах оставляем только имена файлов
$webp2 = array_map(function ($f) { return pathinfo($f, PATHINFO_FILENAME); }, $webp);
$other2 = array_map(function ($f) { return pathinfo($f, PATHINFO_FILENAME); }, $other);
// Вычисляем различия в массивах
$result = array_diff($webp2, $other2);
// Смотрим результат
foreach ($result as $file) {
var_dump($file.'.webp');
}