File::normalizePath()
\nn\t3::File()->normalizePath($path);
Resolves ../../ specifications in path. Works with both existing paths (via realpath) and non-existing paths. non-existing paths.
\nn\t3::File()->normalizePath( 'fileadmin/test/../image.jpg' ); => fileadmin/image.jpg
Copied!
| @return string
Source Code
public function normalizePath($path)
{
$hasTrailingSlash = substr($path, -1) == '/';
$hasStartingSlash = substr($path, 0, 1) == '/';
$path = array_reduce(explode('/', $path), function ($a, $b) {
if ($a === 0 || $a === null) $a = '/';
if ($b === '' || $b === '.') return $a;
if ($b === '..') return dirname($a);
return preg_replace('/\/+/', '/', "{$a}/{$b}");
}, 0);
if (!$hasStartingSlash) $path = ltrim($path, '/');
$isFolder = is_dir($path) || $hasTrailingSlash;
$path = rtrim($path, '/');
if ($isFolder) $path .= '/';
return $path;
}
Copied!