Is there a PHP equivalent function to the Python os.path.normpath()
?
Or how can i get the exactly same functionality in PHP?
path. normpath() method in Python is used to normalize the specified path.
dirname(path) : It is used to return the directory name from the path given. This function returns the name from the path except the path name.
dirname() method in Python is used to get the directory name from the specified path. Parameter: path: A path-like object representing a file system path. Return Type: This method returns a string value which represents the directory name from the specified path.
Here is my 1:1 rewrite of normpath() method from Python's posixpath.py in PHP:
function normpath($path)
{
if (empty($path))
return '.';
if (strpos($path, '/') === 0)
$initial_slashes = true;
else
$initial_slashes = false;
if (
($initial_slashes) &&
(strpos($path, '//') === 0) &&
(strpos($path, '///') === false)
)
$initial_slashes = 2;
$initial_slashes = (int) $initial_slashes;
$comps = explode('/', $path);
$new_comps = array();
foreach ($comps as $comp)
{
if (in_array($comp, array('', '.')))
continue;
if (
($comp != '..') ||
(!$initial_slashes && !$new_comps) ||
($new_comps && (end($new_comps) == '..'))
)
array_push($new_comps, $comp);
elseif ($new_comps)
array_pop($new_comps);
}
$comps = $new_comps;
$path = implode('/', $comps);
if ($initial_slashes)
$path = str_repeat('/', $initial_slashes) . $path;
if ($path)
return $path;
else
return '.';
}
This will work exactly the same as os.path.normpath() in Python
Yes, the realpath
command will return a normalized path. It's similar to a combined version of Python's os.path.normpath
and os.path.realpath
.
However, it will also resolve symbolic links. I'm not sure what you'd do if you didn't want that behavior.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With