[英]Get part of path of all files within some directory and subdirectories
我正在使用Illuminate\\Support\\Facades\\File
检索所有文件:
$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);
}
在emails
目录中有更多子目录,其中一些包含另一个目录。 我想获取所有文件名,不带扩展名,但包含存储文件的子目录的名称。我还想从路径名中省略电子邮件目录(包括电子邮件本身)之前的所有内容。
示例: resources/views/emails/subfolder_one/subfolder_two/myfile.blade.php
预期输出: subfolder_one.subfolder_two.myfile
我这样做的方式有效,但似乎太复杂了。 是否有一个函数可以减少foreach
循环的代码行数?
如果您的文件夹总是从emails
开始,您可能会在索引 3 处分解数组和 for 循环的路径,并将结果与"."
连接起来"."
$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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.