如果您不知道文件扩展名,如何从文件夹中检索文件?

时间:2017-11-26 16:11:01

标签: php image server filesystems

我想从服务器上的特定文件夹中检索文件。

我知道该文件位于路径:

Fodler/Sub-folder/file

但我不知道它是.jpg还是.png。

如何成功找到路径

Fodler/Sub-folder/file.jpg

Fodler/Sub-folder/file.png

3 个答案:

答案 0 :(得分:0)

在PHP中

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

从目录返回一个文件和目录数组。如果目录中只有一个文件,则该数组的大小为1

答案 1 :(得分:0)

您可以使用glob(),并使用星号*作为通配符:

// if glob() does not return false or an empty array
if( !empty( $files = glob( 'Folder/Sub-folder/file.*' ) ) ) {
  // echo the first found file path that matches the pattern
  echo $files[ 0 ];
}

或者,如果您想将搜索范围限制为仅.jpg.png(我最初掩盖了该要求),您可以使用大括号语法{}和{{ 1}}标志。

GLOB_BRACE

如果您只想知道扩展使用pathinfo()

if( !empty( $files = glob( 'Folder/Sub-folder/file.{jpg,png}', GLOB_BRACE ) ) ) {
  // echo the first found file path that matches the pattern
  echo $files[ 0 ];
}

答案 2 :(得分:0)

根据文件名搜索所有文件,直到.ext,然后在路径中搜索所需的图像扩展名。然后重新索引$ matches数组(因为它带有它在glob结果中的索引),并通过索引0获取路径;

$result = glob ("./directory/image.*");
$search = '.png';
$matches = array_values(array_filter($result, function($var) use ($search) { return preg_match("/\b$search\b/i", $var); }));
$filePath = $matches[0];
$ext = pathinfo( $filePath, PATHINFO_EXTENSION );
var_dump($filePath,$ext);

根据您是否需要对.png或.jpg文件执行某项操作,第一个$result应该可以帮助您循环浏览文件。