【问题标题】:Retrieve the list of alla jpg file of a directory [duplicate]检索目录的alla jpg文件列表[重复]
【发布时间】:2012-01-30 17:14:18
【问题描述】:

可能重复:
Finding a file with a specific name with any extension

我有这段代码用于将目录中包含的所有文件放入数组中

$directory =  "./";
$ourDirList = scandir($directory); 
$arraylistafiles=array();

foreach($ourDirList as $ourItem) 
{  
   if (is_file($ourDir . $ourItem)) 
   {$arraylistafiles[]=$ourItem;}
}  

但如果我只想放置具有“.jpg”扩展名的文件,我能做什么?

【问题讨论】:

  • “我能做什么?”好吧,您可以使用搜索功能,因为这已经回答了几十次或更多次。

标签: php


【解决方案1】:

使用 PHP 的 glob() 可以避免 is_file() 调用,因为 glob 只会返回目录中实际存在的文件。在您的情况下,无需创建 UDF(用户定义函数)。

$dir = './';
foreach(glob($dir.'*.jpg') as $file) {
  print $file . "\n";
}

更新

从您的评论中可以明显看出您不了解 glob() 的工作原理。您可以像这样实现您想要做的事情:

$arraylistafiles = glob($dir.'*.jpg');

【讨论】:

  • 我写 foreach(glob($ourDir.'*.jpg') as $ourItem) { if (is_file($ourDir . $ourItem)) {$arraylistafiles[]=$ourItem;} }但没用
  • 您不需要所有额外的代码...glob() 为您提供了您尝试创建的文件数组 ($arraylistafiles)。此外,“不起作用”是模棱两可的——实际的错误消息会更有帮助。你可以这样做:$arraylistafiles = glob($dir.'*.jpg');
【解决方案2】:
 if(is_file($ourDir.$ourItem) && substr($ourItem,-4) == '.jpg') {
     //
 }

【讨论】:

    【解决方案3】:

    您可以使用以下功能。

    public function getFileList($dirpath,$list_ignore,$list_allowed_ext)
        {
            $filelist = array();
            if ($handle = opendir(dirname ($dirpath))) 
            {
               while (false !== ($file = readdir($handle)))
                  {
                      if (!is_dir($file) && !in_array($file,$list_ignore) && in_array(strtolower(end(explode('.',$file))),$list_allowed_ext))
                        {
                            $filelist[] = $file;
                        }
                  }
                closedir($handle);
            }
    
            return $filelist;
        }
    

    实现看起来像..

    $fileTypes = array ("jpg");
    $list_ignore = array ('.','..');
    $fileList = getFileList("./",$list_ignore,$fileTypes);
    

    干杯!

    【讨论】:

      【解决方案4】:

      首先,您必须检查 foreach 数组中文件的文件扩展名。 .如果扩展名是 jpg,则将该项目添加到新数组中。 . .希望你能理解。 .

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 2011-10-01
        • 2014-06-06
        • 2015-02-04
        • 2015-08-30
        • 1970-01-01
        • 2021-12-31
        相关资源
        最近更新 更多