[英]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.