首页>建站相关>用php的scandir函数扫描文件夹中所有文件

用php的scandir函数扫描文件夹中所有文件

因为依赖图片的高度撑起首页的文章列表部分的容器高度,所以对图片的高度有严格的要求。为了确保尺寸统一,所以单独做了一套缩略图。宽高统一为200x150,随着文章内容的逐渐宽泛,相关缩略图的数量也逐渐增加了,所以想做一个辅助页面,列出某个文件夹中所有的图片以及图片的名称。

scandir函数

scandir函数的效果有点儿类似cmd中的dir命令,在linux上则是ls命令,作用都是给出当前文件夹中的所有文件以及目录,它的语法格式如下:

scandir(directory,sorting_order,context);

参数详解

参数 描述
directory 必需。规定要扫描的目录;
sorting_order 可选。规定排列顺序,默认是 0,表示按字母升序排列;如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列;如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果;
context 可选。规定目录句柄的环境,context 是可修改目录流的行为的一套选项。

scandir的实例

顺序打印images文件的目录:

<?php
$dir = "/images/";
$res = scandir($dir);
print_r($res);
?>

输出结果如下:

Array
(
[0] => .
[1] => ..
[2] => cat.gif
[3] => dog.gif
[4] => horse.gif
[5] => myimages
)

实现逆序打印images文件的目录:

<?php
$dir = "/images/";
$res = scandir($dir,1);
print_r($res);
?>

简单去除结果中的"."

<?php
$directory = '/path/to/my/directory';
$scanned_directory = array_diff(scandir($directory), array('..', '.'));
?>

同时遍历子目录中的文件

<?php 
function dirToArray($dir) { 
   
   $result = array(); 

   $cdir = scandir($dir); 
   foreach ($cdir as $key => $value) 
   { 
      if (!in_array($value,array(".",".."))) 
      { 
         if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) 
         { 
            $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); 
         } 
         else 
         { 
            $result[] = $value; 
         } 
      } 
   } 
   
   return $result; 
} 
?> 

示例输出:

Array 
( 
   [subdir1] => Array 
   ( 
      [0] => file1.txt 
      [subsubdir] => Array 
      ( 
         [0] => file2.txt 
         [1] => file3.txt 
      ) 
   ) 
   [subdir2] => Array 
   ( 
    [0] => file4.txt 
   } 
)

标签: PHP

移动端可扫我直达哦~

推荐阅读

php 2024-04-24

Php中数组array的定义增删等相关操作

PHP 中的 array 实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型针对多种不同用途进行了优化; 它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。 由于 arr...

建站相关 PHP

php 2024-04-20

php利用SimpleXML模块解析xml文件

本来想用一个xml文件来获取不断更新的数据,接触这个模块后,发现似乎不能在顶部插入节点,比如有个channel节点,插入子节点始终只能从底部插入,但博主又希望新的内容在channel节点的头部。每次重新装配节点似乎过于复杂,考虑利用j...

建站相关 PHP

php 2024-04-19

php获取远程xml文件并保存到本地

“自从联盟和部落并肩作战,共同抵抗燃烧军团的入侵已经过去了四年。”…错了,自从上次利用rm -rf清洗掉:“虾比比”站点的数据,已经过去了两年。曾经利用php获取远程文件并保存到本地的知识如同部落和联盟之间脆弱的协议,早已荡然无存。倒...

建站相关 PHP

php 2023-10-27

为博客文章添加是否已被百度收录的提示信息

部分主题里在文章的标题栏下方会显示一些文章的相关信息,比如目录啊,作者啊,文章的发布日期等等。其中也有包含文章是否被百度收录的,本身“小鸟数据”这个站点配置了“sitemap.xml”,也提交了百度,是否收录就我为鱼肉了。但是偶尔还是...

建站相关 PHP

php 2023-05-03

php中的替代语法switch的冒号写法

最早接触php语句,是尝试查看wordpress模板的源代码。所以相比常规的大括号写法,更为熟悉的反而是这类带冒号的写法。真正尝试过修改模板之后,会真切体会到这种书写方式的便利。它使得HTML和PHP混合页面代码更加干净整齐,也使代码...

建站相关 PHP

php 2022-10-25

php该用什么命令打印数组

对于wordpress的命令不熟悉,echo打印值的时候经常返回一个array对象。如果不知道array的内部结构,提取具体数据就无从下手,所以有时候我们会想要打印出数组的所有内容,以观察该数组的数据结构。php中有两个命令可以在屏幕...

建站相关 PHP

php 2022-10-22

php在线解压解决免费空间压缩包过大问题

用过一段国外的免费空间,一般都是白天访问速度凑合,一到晚上半天打不开后台页面,前台还是可以访问的,也就比白天慢几条街。因为白天要上班,所以一般博主也就晚上打开站点学习一下建站呀修改主题呀之类的操作,由于正常使用时间段完美被错开,所以最...

建站相关 PHP

php 2022-10-22

php中的单引号和双引号

解析变量上的区别PHP会解析双引号中的变量,而不会解析单引号中的变量。也就是说,如果使用单引号定义的字符串中出现变量,在输出时变量会被原样输出,不会解析成变量的值。而如果使用双引号定义的字符串中存在变量,在输出时变量会被解析为具体的值...

建站相关 PHP

php 2022-10-21

后台php如何与前端js进行数据交换

想用js获取wordpress的options中的部分数据,查询到几种数据交换的方法,先做个记录,后续补完。同页面内的数据交换需要获取的是json数据,直接用php在页面中echo变量,页面上的js可以直接使用options变量,很方...

建站相关 PHP

php 2022-10-17

php对于json数据的编码与解码

想实现一个wordpress后台,跟着阿树工作室的教程学习。自己php基础薄弱,看到利用类实现后台的章节就跟不上了,刚好学到js的极简方法实现一个类,考虑能否在前台用类实现页面,将页面数据汇总成json,统一提交给后台,这样就避开了不...

建站相关 PHP

php 2022-10-13

php中的in_array()函数

in_array()函数搜索数组中是否存在指定的值。如果search参数是字符串且type参数被设置为 TRUE,则搜索区分大小写。in_array的语法in_array(search,array,type) 参数 描述 ...

建站相关 PHP

php 2022-10-12

centos下yum安装php7.4remi源

一直使用centos7.x版本,利用yum工具安装一些软件,centos的更新与默认软件选择都相对保守,centos7.x版本中yum默认来源的php版本一般都是php5.4,到了centos8.x版本,php版本才更新为php7.2...

建站相关 PHP