0

次のphpスクリプトを使用して、ウェブサイトにランダムな画像を表示しています。取得したくない画像を取得することを除いて、うまく機能します。スクリプトにチェックを追加して、取得するだけになるようにします文字「TN-」で始まる画像ですが、私はphpコーダーではないので、ここの専門家に助けを求めようと思いました.

<?php

    // files to search for
    $extList = array();
        $extList['gif'] = 'image/gif';
        $extList['jpg'] = 'image/jpeg';
        $extList['jpeg'] = 'image/jpeg';
        $extList['png'] = 'image/png';

    // set to specific image if needed
    // null will result in a random image
    $img = null;

    // path to the directory you want to scan
    $directory = './';
    if (substr($directory,-1) != '/') {
        $directory = $directory.'/';
    }

    // if img is set, show it
    if (isset($_GET['img'])) {
        $imageInfo = pathinfo($_GET['img']);
        if (
            isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
            file_exists( $directory.$imageInfo['basename'] )
        ) {
            $img = $directory.$imageInfo['basename'];
        }
    } 
    // if img isnt set, grab a random
    else {
        //cycle through directory and subfolders
        $it = new RecursiveDirectoryIterator("$directory");
        foreach(new RecursiveIteratorIterator($it) as $file)
        {
            $file_info = pathinfo($file);
            if (
                isset( $extList[ strtolower( $file_info['extension'] ) ] )
            ) {
                $items[] = $file;
            }
        }
        sort($items);
        // get the random image
        if (count($items) > 0) {
            $imageNumber = time() % count($items);
            $img = $directory.$items[$imageNumber];
        }
    }

    // if img isnt null, display it
    if ($img!=null) {
        $imageInfo = pathinfo($img);
        $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
        header ($contentType);
        readfile($img);
    } 
    // else, try to create one or give error
    else {
        if ( function_exists('imagecreate') ) {
            header ("Content-type: image/png");
            $im = @imagecreate (100, 100)
                or die ("Cannot initialize new GD image stream");
            $background_color = imagecolorallocate ($im, 255, 255, 255);
            $text_color = imagecolorallocate ($im, 0,0,0);
            imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
            imagepng ($im);
            imagedestroy($im);
        }
    }
?>
4

1 に答える 1

1

スクリプトの32行目からブロックにチェックを追加できます。

    //cycle through directory and subfolders
    $it = new RecursiveDirectoryIterator("$directory");
    foreach(new RecursiveIteratorIterator($it) as $file)
    {
        $file_info = pathinfo($file);
        if (
            isset( $extList[ strtolower( $file_info['extension'] ) ] ) &&
            strpos( $file_info['basename'], 'TN-') === 0
        ) {
            $items[] = $file;
        }
    }
于 2012-06-21T05:20:12.833 に答える