我有一个服务器,在各种文件夹、子文件夹和子子文件夹中有很多文件。
我正在尝试创建一个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>";
}
脚本是完美的工作,如果该文件是我的域名的根...现在我试图找到一种方法,使它也扫描子文件夹和子子文件夹,但我困在这里。
4条答案
按热度按时间dgiusagp1#
有两种方法。
使用
glob
执行递归搜索:使用
RecursiveDirectoryIterator
RecursiveDirectoryIterator
来自PHP5,而glob
来自PHP4。两者都可以完成这项工作,这取决于您。pnwntuvh2#
我想提供另一个简单的替代方案,你可以预测最大深度。你可以使用一个模式与括号列出所有可能的子文件夹深度。
此示例允许0-3个任意子文件夹:
当然,支撑图案可以按程序生成。
5kgi1eie3#
这将返回文件的完整路径
调用函数:
这是如下的回报:
/home/directory/thisdir/subdir/findthisfile.jpg
您可以改进此功能,以找到几个文件一样,所有的jpeg文件:
这可以称为:
参考:https://stackoverflow.com/a/1860417/219112
tvz2xvvm4#
作为你的问题的完整解决方案(这也是我的问题):
将为您提供要查找的项目的完整路径。
编辑:感谢Rousseau Alexandre指出,$pattern必须是正则表达式。