Php 获取某些目录和子目录中所有文件的部分路径

Php 获取某些目录和子目录中所有文件的部分路径,php,laravel,Php,Laravel,我正在使用Illumb\Support\Facades\File检索所有文件: 在emails目录中有更多的子目录,其中一些包含另一个目录。我想获得所有文件名,不带扩展名,但带有文件存储在其中的子目录名。我还想省略电子邮件目录之前的所有内容,包括路径名中的电子邮件本身 例如: 资源/视图/电子邮件/子文件夹\一个/子文件夹\两个/myfile.blade.php 预期输出:子文件夹\u one.subfolder\u two.myfile 我这样做是可行的,但似乎太复杂了。是否有一个函数可以减少

我正在使用Illumb\Support\Facades\File检索所有文件:

在emails目录中有更多的子目录,其中一些包含另一个目录。我想获得所有文件名,不带扩展名,但带有文件存储在其中的子目录名。我还想省略电子邮件目录之前的所有内容,包括路径名中的电子邮件本身

例如: 资源/视图/电子邮件/子文件夹\一个/子文件夹\两个/myfile.blade.php

预期输出:子文件夹\u one.subfolder\u two.myfile


我这样做是可行的,但似乎太复杂了。是否有一个函数可以减少foreach循环的代码行数?

如果文件夹总是从电子邮件开始,那么您可以在索引3处分解到数组和for循环的路径,并将结果与链接


什么,不到一个get a循环和4行代码?我同意,我只是想知道是否有类似于getPathInfo的函数只返回路径的一部分,我需要的部分?和getBasename类似,若我能将我想在path中省略的内容作为参数传递,那个就好了!谢谢
    $files = File::allFiles(base_path('resources/views/emails'));
    foreach($files as $file) {
        $file_name = $file->getBasename('.blade.php');
        $path_info = $file->getPathInfo();

        $template = substr($path_info, strpos($path_info, 'emails/') + 7).'.'.$file_name;
        $template = str_replace('/', '.', $template);
    }
$str = 'resources/views/emails/subfolder_one/subfolder_two/myfile.blade.php';
$str_arr = explode('/', $str);
$template = '';
for ($i = 3; $i < count($str_arr); $i++) {
    $template .= $str_arr[$i] . '.';
}
dd($template);