/** * Recursively creates new folders from the specified path or paths * * @param mixed a single path or an array of paths * @param number initial permissions for * @return mixed the cleaned path or array of paths */ public static function make_path($path, $permissions = 0755) { if (is_array($path)) { foreach ($path as $p) { $arr = array(); array_push($arr, filesystem::make_path($p, $permissions)); } return $arr; } else { $path = preg_replace('%/+%', '/', $path); // remove double slashes $path = preg_replace('%/$%', '', $path); // remove trailing slash $folders = preg_split('%(?!^)/%', $path); // split into path segments, preserving any initial leading slash $path = ''; foreach ($folders as $folder) { $path .= $folder . '/'; if (!file_exists($path)) { mkdir($path, $permissions); } } return dir($path); } }