[英]Listing out files in PHP (ONLY the files) as links from all subdirectories of a directory
[英]PHP: How to list files in a directory without listing subdirectories
这是我的代码的起始部分,用于列出目录中的文件:
$files = scandir($dir);
$array = array();
foreach($files as $file)
{
if($file != '.' && $file != '..' && !is_dir($file)){
....
我试图列出目录中的所有文件而不列出子文件夹。 代码正在运行,但同时显示文件和文件夹。 我在上面的代码中添加了!is_dir($file)
,但结果仍然相同。
应该是这样的,我想:
$files = scandir($dir);
foreach($files as $file)
{
if(is_file($dir.$file)){
....
只需使用is_file
。
例子:
foreach($files as $file)
{
if( is_file($file) )
{
// Something
}
}
这将扫描文件,然后检查 . 或 .. 在一个数组中。 然后推送不包括 . 和 .. 在新的 files[] 数组中。
尝试这个:
$scannedFiles = scandir($fullPath);
$files = [];
foreach ($scannedFiles as $file) {
if (!in_array(trim($file), ['.', '..'])) {
$files[] = $file;
}
}
看起来如此简单的事情真是太痛苦了! 没有什么对我有用......为了得到结果,我假设文件名有一个扩展名,在我的情况下它必须。
if ($handle = opendir($opendir)) {
while (false !== ($entry = readdir($handle))) {
$pos = strpos( $entry, '.' );
if ($entry != "." && $entry != ".." && is_numeric($pos) ) {
…… 好入门
这是一个快速简单的单行列表,仅列出文件。 由于用户只想列出文件,因此无需扫描目录并返回所有内容并排除目录。 只需获取任何类型或特定类型的文件。 使用 * 返回所有文件而不考虑扩展名,或者通过将 * 替换为扩展名来获取具有特定扩展名的文件。
获取所有文件而不考虑扩展名:
$files = glob($dir . DIRECTORY_SEPARATOR . "*");
获取所有带有 php 扩展名的文件:
$files = glob($dir . DIRECTORY_SEPARATOR . "*.php");
获取所有扩展名为 js 的文件:
$files = glob($dir . DIRECTORY_SEPARATOR . "*.js");
我对我的网站使用以下内容:
function fileList(string $directory, string $extension="") :array
{
$filetype = '*';
if(!empty($extension) && mb_substr($extension, 0, 1, "UTF-8") != '.'):
$filetype .= '.' . $extension;
else:
$filetype .= $extension;
endif;
return glob($directory . DIRECTORY_SEPARATOR . $filetype);
}
用法 :
$files = fileList($configData->includesDirectory, '');
使用我的自定义函数,我可以包含扩展名或将其留空。 此外,我可能会忘记放置 . 在扩展之前,它会成功。
使用DIRECTORY_SEPARATOR
常量也将文件附加到其目录路径。
function getFileNames($directoryPath) {
$fileNames = [];
$contents = scandir($directoryPath);
foreach($contents as $content) {
if(is_file($directoryPath . DIRECTORY_SEPARATOR . $content)) {
array_push($fileNames, $content);
}
}
return $fileNames;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.