列出所有匹配文件夹的字符串文件夹结构

问题描述 投票:0回答:1

我已经尝试这样做几天了,但我真的很挣扎。如何从下面的字符串生成所有可能的扫描文件夹并替换 %%%ANY_DIR%%% 中的所有可能的文件夹?

$multiple_folder_scan_structure = "Customers/%%%ANY_DIR%%%/HW/%%%ANY_DIR%%%/XR7 and XR7 plus (7702 and 7703)";

预期的输出应列出在上面定义的结构中找到的所有可能的完整文件夹路径。对于 1 个 %%%ANY_DIR%%% 这很容易,但是对于 2 或 3 个,我完全不知道如何实现这一点。

预期数组的示例如下所示:

../../Customers/Morrisons/HW/SS90 Card Only (7709)/XR7 and XR7 plus (7702 and 7703)
../../Customers/Morrisons/HW/Test/XR7 and XR7 plus (7702 and 7703)
../../Customers/Sainsbury's/HW/SS90 Card Only (7709)/XR7 and XR7 plus (7702 and 7703)
../../Customers/Tesco/HW/SS90 Card Only (7709)/XR7 and XR7 plus (7702 and 7703)

我尝试过下面的其他代码,但是当我扫描第一个 %%%ANY_DIR%%% 时它就会发生冲突,然后我使用的变量突然不是线性的。我觉得我应该实现一个动态循环(也许是 While ),但我一无所知。 我在这里使用“scan_dir_sorted”函数来扫描任何文件夹并将其放入数组中。

      $multiple_folder_scan_structure_anydir_exp = explode('/', $multiple_folder_scan_structure);
      
      $any_dir_counter = 0;
      foreach ($multiple_folder_scan_structure_anydir_exp as $folder)  {
        if (strtoupper($folder) == "%%%ANY_DIR%%%")  {
          //echo $multiple_folder . "<br>";
          
            foreach (scan_dir_sorted($multiple_folder) as $any_dir)  {
              //echo $multiple_folder . $any_dir . "<br>";
              $any_dir_scanned_folders[$any_dir_counter][] = $any_dir;
            
            }
          $any_dir_counter++;
          $multiple_folder .= $folder . "/";
        }
        else
          $multiple_folder .= $folder . "/";
      }

如有任何帮助,我们将不胜感激。

谢谢

php directory nested-loops
1个回答
0
投票

谢谢 Michal,你一针见血,答案确实是 Glob 函数。

对于任何寻找相同答案的人来说,该功能对我来说是这样的:

glob("../../Customers/*/HW/*/XR7 and XR7 plus (7702 and 7703)");

我不敢相信我没有早点找到这个功能。

© www.soinside.com 2019 - 2024. All rights reserved.