我正在尝试显示目录中所有文件夹的列表。但我不希望列出任何包含单词“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”的文件夹。
答案 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")){
}