- array_reduce: documentation ( source)
- array_splice: documentation ( source)
- parse_str: documentation ( source)
- var_export: documentation ( source)
- explode: documentation ( source)
- trim: documentation ( source)
<?php
$string ="Folder1/Folder2/Folder3/filename1\n";
$string .=" Folder1/Folder2/Folder3/filename2\n";
$string .=" Folder4/Folder2/Folder3/filename3\n";
$string .=" filename4\n";
$string .=" Folder5/filename5\n";
$string .=" Folder5/Folder6/filename6\n";
$parsable = '';
foreach (explode("\n", trim($string)) as $path) { // cut off final newline and explode
$entries = explode("/", trim($path)); // cut off leading spaces and explode
$file = array_splice($entries, -1); // separate filename from path
$path = array_reduce($entries, function($carry, $v) {
return $carry."[$v]"; // wrap each folder in square brackets
});
$parsable .= "path{$path}[]={$file[0]}&"; // build parsable string (final trailing & will be ignored)
}
echo $parsable,"\n\n";
parse_str($parsable, $out);
var_export($out);