PHP:ディレクトリにある画像をランダムに表示する

PHP:ディレクトリにある画像をランダムに表示する

2024年1月28日

画像をランダムに表示するスクリプトです。
画像の数が少なくて更新頻度も少なければもっと別の書き方もありますが、画像の差し替え頻度が多い場合など、別の人に画像の準備だけお願いしたいときなどは便利です。

function getRandomImageTag($directory) {
    $images = array_diff(scandir($directory), array('..', '.'));
    $images = array_filter($images, function($file) use ($directory) {
        return in_array(strtolower(pathinfo($file, PATHINFO_EXTENSION)), ['jpg', 'png']);
    });

    if (count($images) > 0) {
        $randomImage = $images[array_rand($images)];
        $timestamp = time(); // 現在のタイムスタンプを取得
        return '<img src="'.$directory.'/'.$randomImage.'?'.$timestamp.'" alt="Random Image">';
    } else {
        return '画像が見つかりません。';
    }
}

挿入したいHTMLの箇所に下記のように配置すればディレクトリ内の画像を読みに行きます。

<div>
    <?php echo getRandomImageTag('images'); ?>
</div>

最近はWebサイトの構築も内製化していき、制作未経験な人にも手伝ってもらうことがあったりするらしいので、そういう場合はなるべく更新時に間違いのないように作っておくとコードを読めない人にも安心なのかなと思います。