当前位置: 首页 > 面试题库 >

php glob-在子文件夹中扫描文件

唐睿
2023-03-14
问题内容

我有一台服务器,该服务器的各个文件夹,子文件夹和子子文件夹中都有很多文件。

我正在尝试制作一个search.php页面,该页面将用于在整个服务器中搜索特定文件。如果找到文件,则返回位置路径以显示下载链接。

这是我到目前为止的内容:

$root = $_SERVER['DOCUMENT_ROOT'];
$search = "test.zip";
$found_files = glob("$root/*/test.zip");
$downloadlink = str_replace("$root/", "", $found_files[0]);
if (!empty($downloadlink)) {
    echo "<a href=\"http://www.example.com/$downloadlink\">$search</a>";
}

如果文件位于我的域名的根目录下,则脚本可以正常工作…现在,我试图找到一种方法来使其也扫描子文件夹和子文件夹,但是我被卡在了这里。


问题答案:

有两种方法。

glob做递归搜索:

<?php

// Does not support flag GLOB_BRACE
function rglob($pattern, $flags = 0) {
    $files = glob($pattern, $flags); 
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $files = array_merge($files, rglob($dir.'/'.basename($pattern), $flags));
    }
    return $files;
}

?>

采用 RecursiveDirectoryIterator

<?php
function rsearch($folder, $pattern) {
    $dir = new RecursiveDirectoryIterator($folder);
    $ite = new RecursiveIteratorIterator($dir);
    $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH);
    $fileList = array();
    foreach($files as $file) {
        $fileList = array_merge($fileList, $file);
    }
    return $fileList;
}
?>

RecursiveDirectoryIterator来自PHP5,而glob来自PHP4。两者都能胜任,这取决于您。



 类似资料:
  • 问题内容: 如何用Java递归列出文件夹中的所有文件? 问题答案: 不确定要如何表示树?无论如何,这是一个使用递归扫描整个子树的示例。文件和目录是相同的。请注意,File.listFiles()对于非目录返回null。 Java 7提供了一些改进。例如,DirectoryStream一次提供一个结果- 调用者在执行操作之前不再需要等待所有I / O操作完成。这允许增量GUI更新,提前取消等。 请注

  • 问题内容: 我想扫描目录树并列出每个目录中的所有文件和文件夹。我创建了一个程序,可从网络摄像机下载图像并将其保存在本地。该程序根据图片的下载时间创建文件树。我现在想扫描这些文件夹并将图像上传到Web服务器,但是我不确定如何扫描目录以查找图像。如果有人可以张贴一些示例代码,那将非常有帮助。 编辑 :我在嵌入式linux系统上运行它,不想使用boost 问题答案: 请参阅以获取简单的“文件树遍历”。我

  • 我应该在属性文件中添加什么以便它包括。模块文件?

  • 问题内容: 尽管我们已部署了最新的类,但我们正在使用的是旧版本的类。要扫描应用程序服务器所有子文件夹中的所有JAR文件,我们如何编写一个小的Shell脚本来打印出找到该特定类的JARS文件的文件名? 问题答案: 就像是: 您可以这样包装: 然后将在当前目录下找到的所有jar文件中搜索该类

  • 我从我的IntelliJ Java 15 Gradle项目的resources文件夹中的子文件夹加载文件时遇到问题...

  • 我刚刚开始使用JSP,遇到了一个问题。 据我所知,WEB-INF下的JSP页面可以通过浏览器在localhost中使用URL进行访问: 但是,如果我在WEB-INF文件夹(即'MyFolder')中创建另一个子文件夹,并尝试通过URL访问相同的JSP页面: 它给出了一个错误404。JSP文件导航系统与HTML文件导航系统有区别吗? 编辑:我正在使用servlet来显示我的JSP页面: EDIT2: