【问题标题】:Php add comand for search file on subfoldersphp add 命令在子文件夹中搜索文件
【发布时间】:2019-09-24 17:10:44
【问题描述】:

我有这个运行良好的脚本,但我需要添加一个用于搜索所有子文件夹的命令。

示例:我有一个文件夹数据,其中包含更多其他文件夹...我需要搜索此文件夹上的文件。

$dir = 'data'; 
$exclude = array('.', '..', '.htaccess'); 
$q = (isset($_GET['q'])) ? strtolower($_GET['q']) : ''; 
$res = opendir($dir); 

while(false !== ($file = readdir($res))) { 
    if(strpos(strtolower($file), $q) !== false &&!in_array($file, $exclude)) { 
        echo "<a href='$dir/$file'>$file</a>"; 
        echo "<br>"; 
    } 
} 

closedir($res); 

【问题讨论】:

标签: php


【解决方案1】:

你可以使用 scandir() 函数

$dir  = '/tmp';
$file = scandir($dir);
print_r($file);

【讨论】:

  • 谢谢,但是在使用搜索后,这不会显示我对文件夹的要求。这显示我数组( [0] => . [1] => .. [2] => pdf1 [3] = > pdf2 [4] => pdf3 ) 我需要从文件夹中搜索并显示文件 pdf1、pdf2 和 pdf3 是 me.folders。谢谢
  • 如果搜索后文件不存在,我需要帮助在原始脚本上添加消息通知。示例:找不到文件。
  • 试试这个 if (file_exists($filename)) { echo "success";}else{ echo "$filename 文件不存在"; }
  • 谢谢!请在找到文件之前在脚本上添加消息“等待文件搜索...”消息是否可行?
【解决方案2】:

我认为这是您正在寻找的递归函数:

function dir_walk($dir, $q) {
    $q = trim($q);
    $exclude = array('.', '..', '.htaccess'); 
    if($dh = opendir($dir)) {
        while(($file = readdir($dh)) !== false) {
            if(in_array($file, $exclude)) { continue; }
            elseif(is_file($dir.$file)) {
                if($q === '' || strpos(strtolower($file), $q) !== false) { 
                    echo '<a href='.$dir.$file.'>'.$dir.$file.'</a><br/>';
                    }
                }
            elseif(is_dir($dir.$file)) {
                dir_walk($dir.$file.DIRECTORY_SEPARATOR, $q);
                }
            }
        closedir($dh);
        }
    }

$q = (isset($_GET['q'])) ? strtolower($_GET['q']) : ''; 
dir_walk('/data/', $q);

编辑:数据需要是主目录的绝对路径,结束目录分隔符“/data/”

【讨论】:

  • 谢谢你,但没有工作..没有找到任何结果..我需要在文件夹和子文件夹上搜索文件。示例我有文件夹数据,其中包含 pdf1、pdf2 和 pdf3 文件夹...我需要在这个 pdf1..pdf2..pdf3 上搜索文件...谢谢。
  • 在这里它可以工作,但我必须放置绝对路径,带有结束目录分隔符,在 Windows 上使用“c:\\data\\”进行测试。尝试调试它以匹配 is_dir() 和 is_file()。并使用 $_GET['q'] 代替 'mysearch'。
  • 我使用 HTML 代码在 xmapp 上运行这个 php 文件,也许这是问题?
  • 已经改进了代码,重试这个。并且不要忘记将您的绝对/真实路径改为“/data/”。如果失败,请尝试不使用表单进行调试。 Xampp 在什么操作系统上?
  • 我使用的是 windows 10 64 位版本。
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2015-08-04
  • 2021-04-07
  • 2017-06-04
  • 1970-01-01
相关资源
最近更新 更多