【问题标题】:PHP - exclude file type when printing img directoryPHP - 打印 img 目录时排除文件类型
【发布时间】:2014-02-06 15:03:36
【问题描述】:

我正在用 PHP 编写一个简单的钓鱼游戏。我有一段代码打印 /img 目录中的所有图像文件,但它也输出 .DS_Store。我想排除该文件,可能使用 glob(),但我不知道如何。我已经用谷歌搜索了几个小时,但没有运气。

$files = scandir('img');
if ($files !== false) {
    foreach($files as $f) {
        if ($f == '..' || $f == '.') continue;
            echo '<li class="fish_pic"><img src="img/'.$f.'" alt="'.$f.'" title="" class="fish"></li>'."\n";
    }
}

如何排除 .DS_Store?

【问题讨论】:

  • 请学会缩进你的代码,以便它可读并且块/嵌套清晰。
  • 因为我是新来的,你能告诉我如何正确缩进我的代码吗?选项卡不起作用。与其投反对票,不如教新用户让他们学习。
  • 缩进。你能删除反对票吗?
  • 完成。顺便说一句,回声不应该缩进,因为它没有嵌套在“if”下面。

标签: php foreach glob file-type scandir


【解决方案1】:

只需添加一个 if 规则。

if ($f == '..' || $f == '.' || $f == '.DS_Store') continue;

或者,您可以使用数组和in_array() 方法。

$filesToSkip = array('.', '..', '.DS_Store', 'other_file_to_skip');

$files = scandir('img');
if ($files !== false) {
 foreach($files as $f) {
   if (in_array($f, $filesToSkip)) continue;
   echo '<li class="fish_pic"><img src="img/'.$f.'" alt="'.$f.'" title="" class="fish">   </li>'."\n";
 }
}

【讨论】:

    【解决方案2】:
    $files = scandir('img');
    if ($files !== false) {
        foreach($files as $f) {
            if ($f == '..' || $f == '.' || substr($f, -strlen(".DS_Store")) === ".DS_Store") continue;
                echo '<li class="fish_pic"><img src="img/'.$f.'" alt="'.$f.'" title="" class="fish"></li>'."\n";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-04
      • 2021-08-27
      • 2011-08-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多