2010-11-10 4 views
0

La 2ème branche de code ci-dessous affiche toutes les images trouvées dans le répertoire ($ dir).Liste toutes les images d'un répertoire, sauf celles trouvées [image1.jpg, image2.jpg, etc]

Je voudrais simplement exclure des images de la sortie qui apparaissent dans le tableau ci-dessous excludeImages $:

/* collect attached images into an array to test against */ 
    global $wpdb; 
    $excludeImages = array(); 
    $excludeImagesFiles = $wpdb->query(
     "SELECT meta_value 
     FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file'"); 
    array_push($excludeImages, $excludeImagesFiles); 

C'est le code tel qu'il existe sans filtre exclure ...

$imgs = array(); 
    if ($dh = opendir($dir)) 
    { 
    if(!get_option('cb2_underscores')){$myfilter="^";}else{$myfilter="";} 

    while (($file = readdir($dh)) !== false) 
     { 
     if (!is_dir($file)&& $file != "." && $file != ".." && preg_match("/^[".$myfilter."_].*\.(bmp|jpeg|gif|png|jpg)$/i", $file)) 
     // and $file not contained in the $excludeImagesFiles array 
      { 
       array_push($imgs, $file); 
      } 
     } 
     closedir($dh); 
    } else { 
     die('cannot open ' . $dir); 
    } 
    if($imgs) 
    { 
     sort($imgs); 
     echo '<div class="images">'; 
     foreach ($imgs as $idx=>$img) 
     { 
      $class = ($idx == count($imgs) - 1 ? ' class="last"' : ''); 
      echo $prelink.' src="' . $url . $img . '" alt="' .$img . '"' . $class . ' />'.$postlink; 
     } 
     echo '</div>'; 
    } 

Quel code ai-je besoin d'insérer dans la branche while pour m'assurer que l'une des images du tableau ne soit pas ajoutée à array_push()?

+0

Examinez les itérateurs de regex et de répertoires. Ils vont rendre ce code beaucoup plus facile. Voyez cette question que j'ai posée concernant un sujet similaire: http://stackoverflow.com/questions/3321547/help-using-regexiterator-in-php – Chris

Répondre

0

Vérifiez si le fichier $ correspond à une entrée dans le tableau de liste d'exclusion. Ajoutez une condition comme celle-ci:

if (!in_array($file, $excludeFiles)) ...