从名称数组中的搜索中排除某些文件

时间:2010-06-19 13:11:05

标签: php

此函数从与页面名称匹配的文件夹中抓取所有jpeg并打印背景图像。在主页上,它搜索所有子目录并随机选择一个。我想要的是(仅在主页上)排除某些与一系列名称匹配的文件......任何人都可以帮忙吗?

$isHome = $this->level() == 0;

$path = 'public/images/bg/';
if (!$isHome) $path .= $this->slug;

$homepagefile = URL_PUBLIC.'public/images/bg/'.$this->slug.'/main.jpg';

$bgimagearray = array();
$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile() && !preg_match('\.jpg$/', $fileinfo->getFilename()) &&  !$isHome) {
        $bgimagearray[] = "'" . $fileinfo->getFilename() . "'";
    } else if ($fileinfo->isDir() && $isHome) {
        $iterator2 = new DirectoryIterator($path . $fileinfo->getFilename());
        foreach ($iterator2 as $fileinfo2) {
            if ($fileinfo2->isFile() && !preg_match('\.jpg$/', $fileinfo2->getFilename())) {
                $bgimagearray[] = "'" . $fileinfo->getFilename() . '/' . $fileinfo2->getFilename() . "'";
            }
        }
    }
}

$bgimage = array_rand($bgimagearray);

1 个答案:

答案 0 :(得分:0)

简单来说,在过滤哪些项目进入主页的if时,您只需要bgimagearray语句中的其他条件。

if ($fileinfo2->isFile() 
    && !preg_match('\.jpg$/', $fileinfo2->getFilename())
    && ! in_array($fileinfo2->getFilename, $my_blacklist_array) // added
) {

除此之外:您的代码有点乱,您的任务很可能通过更漂亮的代码结构来解决;但是,这将是对现有代码的重写,而不是回答提出的问题。