排除其中包含“拇指”一词的文件夹

时间:2013-11-05 17:46:13

标签: php if-statement foreach file-get-contents

我正在尝试显示目录​​中所有文件夹的列表。但我不希望列出任何包含单词“thumbs”的文件夹。有人可以告诉我如何做到这一点......这是我使用的代码似乎不起作用。它显示所有文件夹,但不会阻止其中包含“thumbs”字样的文件夹。

<?php
$dir = new RecursiveDirectoryIterator('puzzle/images/puzzles/',
    FilesystemIterator::SKIP_DOTS);

$it  = new RecursiveIteratorIterator($dir,
    RecursiveIteratorIterator::SELF_FIRST);

$it->setMaxDepth(1);

foreach ($it as $fileinfo) {
    if ($fileinfo == '*thumbs') {
        // PLACEHOLDER
    } elseif ($fileinfo->isDir()) {
        echo $fileinfo . "<br><br>";
    }
}
?>

输出看起来像这样......

puzzle/images/puzzles/vehicles

puzzle/images/puzzles/vehicles/thumbs

puzzle/images/puzzles/scenery

puzzle/images/puzzles/scenery/thumbs

puzzle/images/puzzles/movies

puzzle/images/puzzles/movies/thumbs

puzzle/images/puzzles/thumbnails

puzzle/images/puzzles/holidays

puzzle/images/puzzles/holidays/thumbs

puzzle/images/puzzles/holidays/thanksgiving

这就是我希望输出看起来像是没有以下文件夹...

puzzle/images/puzzles/vehicles/thumbs

puzzle/images/puzzles/scenery/thumbs

puzzle/images/puzzles/movies/thumbs

puzzle/images/puzzles/holidays/thumbs

或者稍后我放在那里的任何名称为“thumbs”的文件夹。

1 个答案:

答案 0 :(得分:1)

$fileinfo == '*thumbs'只会匹配确切的字符串'*thumbs',因为==无法将*识别为通配符。

你想使用这样的东西: strpos($fileinfo ,'thumbs') !== false

如果文件路径需要以'thumbs'结尾,则可以定义endsWith函数*:

function endsWith($haystack, $needle)
{
    return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
}

然后像这样调用函数:

if (endswith($fileinfo, "thumbs")){

}

*来自this SO answer