2012-06-21 4 views
0

Я использую следующий скрипт php, чтобы показать случайное изображение на моем веб-сайте, и он отлично работает, за исключением того, что он будет захватывать изображения, которые я не хочу, чтобы они хватались, поэтому я хотел бы добавить проверьте скрипт, чтобы он только захватил изображение, если он начинается с букв «TN-», но я не php-кодер, поэтому я подумал, что попрошу экспертов здесь помочь.скрипт случайного изображения 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); 
     } 
    } 
?> 

ответ

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; 
     } 
    } 
+0

Спасибо, теперь он прекрасно работает. Очень признателен. – nosx

 Смежные вопросы

  • Нет связанных вопросов^_^