Получить все изображения в каталоге, кроме сетчатки

0

У меня есть php-скрипт, который захватывает все изображения в заданной директории. Скрипт работает без сбоев. Моя проблема в том, что я хочу, чтобы она не получала никаких изображений сетчатки. Все изображения сетчатки названы в формате "[email protected]", тогда как все обычные изображения называются в формате "image1.jpg". Имея это в виду, я хочу, чтобы мой скрипт скидывал любое изображение, содержащее "@2x" в нем.

Мой скрипт:

<?php
    $directory = 'images/';
    $dh = opendir($directory);
    while (false !== ($filename = readdir($dh)))
    {
        $files[] = $filename;
    };
    $images = preg_grep ('/(\.gif|\.GIF|\.jpg|\.jpeg|\.JPG|\.JPEG|\.png|\.PNG)$/i', $files);

    foreach ($images as $image)
    {
        echo '<img src="'.$directory.$image.'" alt="">';
    }
?>

Проблема в том, что у меня нет словарного запаса, чтобы знать, что искать в Google, поэтому, если кто-нибудь может указать мне в правильном направлении, я был бы признателен. благодаря

Теги:

2 ответа

1
Лучший ответ

Вы можете сделать свой скрипт немного короче, используя:

$directory = 'images/';

$allImages = glob($directory.'*.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}', GLOB_BRACE);
$nonRetinaImages = preg_grep('/@2x/i', $allImages, PREG_GREP_INVERT);

foreach ($nonRetinaImages as $image)
{
    echo '<img src="'.$image.'" alt="">';
}
2

Я бы использовал stripos, чтобы установить это условие в вашей петле foreach

if(stripos($image,'@2x') === false){
    echo '<img src="'.$directory.$image.'" alt="">';
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню