在目录树中查找具有给定扩展名的文件

2024-01-21

我有一个文件夹,其中有一些文件和子文件夹。例如,我需要返回具有给定扩展名的文件名或相对地址(如果文件位于子文件夹中).html.

例如,这是给定文件夹的结构:

  • /文本/某事.ncx
  • /文本/123.html
  • 内容.opf
  • toc.ncx
  • Flow_0.html
  • Flow_1.html
  • Flow_2.html

所以代码应该返回这个(理想情况下在数组中):

  • 文本/123.html
  • Flow_0.html
  • Flow_1.html
  • Flow_2.html

它只是取出名字.html扩展,但我真的不知道如何解决这个问题。


你可以使用RecursiveDirectoryIterator http://php.net/recursivedirectoryiterator to get all递归文件,然后使用过滤结果RegexIterator http://php.net/regexiterator仅迭代*.html文件。为了得到相对地址, RecursiveDirectoryIterator::getSubPathname() http://php.net/recursivedirectoryiterator.getsubpathname可以使用。

$directory  = '../path/to/your/folder';
$all_files  = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$html_files = new RegexIterator($all_files, '/\.html$/');

foreach($html_files as $file) {
    echo $html_files->getSubPathname(), PHP_EOL;
}

如果您确实需要数组(使用您通常不需要的可迭代对象),您可以轻松地在foreach而不是echo-ing 每个子路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在目录树中查找具有给定扩展名的文件 的相关文章

随机推荐

  • 为什么 TFS 中所有文件都标有“合并”?

    我正在将我的开发分支合并到主分支中 我在开发分支中仅更改了一部分文件 所有其他文件应保持不变 从逻辑上讲 我只想合并已更改的文件 我不会签入我没有更改的文件 但是当我在 TFS 中执行合并操作时 它会用更改类型 合并 标记树中的每个文件 看
  • git log 的输出在通过管道传输到文件时丢失 - 我缺少什么?

    我正在尝试通过命令行获取有关某些 git 提交的一些信息 作为我正在构建的更大自动化工具的一部分 我想要的信息可以通过以下 git log 命令获得 git log branches graph oneline parents 产生以下输出
  • 开罗图书馆和 Cmake

    我是 c 和 cmake 的新手 我按照所写安装了开罗库here https cairographics org download 通过端口 现在我想将开罗纳入我的项目中 我编写了 CmakeLists txt 命令 如图所示here ht
  • Angular 2 Uncaught(承诺):TypeError:无法读取未定义的属性“isActivated”

    如果我返回相同的路由路径 则会显示错误 未捕获 承诺 类型错误 无法读取未定义的属性 isActivated 但第一次不显示 谁能帮我 路由 const mainRoutes Routes path pathMatch full redir
  • MVC 捆绑不起作用

    我正在开发一个小型 mvc 项目 我已经在 BundleConfig cs 中声明了一个包 如下所示 JavaScript 包 bundles Add new ScriptBundle bundles Layout1JS Include C
  • 如何让 chrome 自动填充异步帖子

    我有一个表单 因为它是异步提交的
  • 节点 - fs.statbirthtimeMs 和 mtimeMs

    我在 Windows 的文件系统 NTFS 上创建了一个空文件 我打了电话fs stat并意识到birthtimeMs和mtimeMs是相等的 这对我的情况很有好处 因为我需要检测是否有人在此期间没有以某种方式更改文件 所以在 Window
  • 找到可执行文件的路径

    我使用 Go 为各种平台编译一个程序 并通过调用相对路径或仅通过其名称 如果它位于 PATH 变量中 来运行它 是否可以找出可执行文件在哪里 比如说 我的程序叫做 foo exe 我可以跑 foo foo 如果它在路径中 subdir su
  • 强制转换 (int?)null 与 new int?() - 哪个更好?

    I use Nullable
  • 没有默认构造函数的值初始化

    我想知道在什么情况下一个类可能没有默认构造函数但仍然会被值初始化 无默认构造函数 的典型情况是存在参数化构造函数但不存在默认构造函数违约 default 引用 2020 年标准第 9 4 1 章 初始化器 常规 最新草案包含等效措辞 对 T
  • Android:正弦波生成

    我正在尝试使用 AudioTrack 生成正弦波 方波和锯齿波 然而 它创建的音频听起来不像纯正弦波 而是像叠加了某种其他波 在使用第一个示例中的方法的同时 如何获得像第二个代码示例中那样的纯正弦波 由于上面的例子只涉及第二个例子中使用的一
  • Git hooks - 如何仅处理属于存储库内特定文件夹的文件?

    我对 git 有点陌生 对 bash 不太擅长 我有一个存储库 如果重要的话 在 Bitbucket 中 它只包含两个文件夹 我已经有一个钩子 用 bash 编写 可以触发 Jenkins 作业 现在我想更改它 因此它将仅针对提交到其中一个
  • 从另一个包加载 spritekit 场景?

    我正在使用 swift 4 2 制作 SpriteKit 框架 并希望包含一些用于场景和动作的 sks 文件 我尝试使用以下代码从包中加载场景 class func newGameScene gt GameScene guard let g
  • 设置文本时停止调整 UITextField 大小

    我有一个视图设置 其中布局了 4 个 UITextFields 并设置了约束 以便它在所有设备上看起来都很棒并且按预期工作 我有一个问题 如果我使用 TextField text some long text 设置文本或 TextField
  • 如何从 sqlite (3.6.21) 表中删除约束?

    我有下表 CREATE TABLE child id INTEGER PRIMARY KEY parent id INTEGER CONSTRAINT parent id REFERENCES parent id description T
  • 跨隐藏跨度搜索文本 (Ctrl+F)

    Is it possible to search for text using your browser s Ctrl F function across three span tags if the middle tag is set t
  • 突出显示特定日期(来自 bean 的值)

    使用素面
  • C++11 中的纯函数

    C 11 中的一个可以以某种方式gcc将函数 不是类方法 标记为const告诉它是pure并且不使用全局内存而仅使用其参数 我试过了gcc s attribute const 它是恰恰我想要的是 但当函数中触及全局内存时 它不会产生任何编译
  • PHP $_POST 不带重音符号

    这个问题已经解决了 看我的回答看看解决方案 我试图通过使用 POST 提交到 PHP 页面的 html 表单向我的数据库添加带有重音字母的文本 问题是重音字母被转换为不可读的字符 我有这个表格
  • 在目录树中查找具有给定扩展名的文件

    我有一个文件夹 其中有一些文件和子文件夹 例如 我需要返回具有给定扩展名的文件名或相对地址 如果文件位于子文件夹中 html 例如 这是给定文件夹的结构 文本 某事 ncx 文本 123 html 内容 opf toc ncx Flow 0