我想从服务器上的特定文件夹中检索文件。
我知道该文件位于路径:
Fodler/Sub-folder/file
但我不知道它是.jpg还是.png。
如何成功找到路径
Fodler/Sub-folder/file.jpg
或
Fodler/Sub-folder/file.png
答案 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
应该可以帮助您循环浏览文件。